`

JavaScript 的怪癖 3:标准的等号 (==)

 
阅读更多

原文:JavaScript quirk 3: normal equality (==)

译文:JavaScript 的怪癖 3:标准的等号 (==)

译者:iranw

此文是 javascript 的 12 个怪癖(quirks) 系列的第三篇。

让我们先看一个简单的例子: 由于一般的等于符号 ==、!=经常会出现问题,以至于我们不得不使用严格等于(===、!==)。 当然有人说这些规则也有例外,我不同意这个观点[2]。 怀揣的这个问题,我们现在就来看一下这个奇怪的现象:== 是不必要。

这个“正常”的等号(==)有很多怪癖。 虽然他很宽容(非严格比较),当与真值或者假值比较时,它会忽略类型(详见怪癖1):

> 0 == false  // OK
true
> 1 == true  // OK
true
> 2 == true  // not OK
false

> '' == false  // OK
true
> '1' == true  // OK
true
> '2' == true  // not OK
false

除了这些,我们设置可以把那些明显不能比较的值进行比较(我勒个去~~比较的结果居然还是 true):

> '' == 0
true
> '\n  123  \t' == 123
true

最后一次比较返回是 true,因为在 javascript 中把字符串转换数字类型时,会过滤掉首尾空白字符。 如果你仍然对关于 == 怎么工作感兴趣,你可以读读这篇文章。 对于严格比较符(===),不同类型的值比较是不相等的 [1]。也就是说试用严格比较符号,上诉的问题都不复存在。

参考文献:

  1. Equality in JavaScript: === versus ==

  2. When is it OK to use == in JavaScript?

分享到:
评论

相关推荐

    JS简单标签及相关的应用

    JavaScript (JS) 是一种广泛使用的脚本语言,常用于Web开发以增强用户交互体验。本文将重点介绍几个基础的JS标签及其应用场景,这对于初学者来说是非常有用的入门知识。 #### 二、基础知识概述 在讨论具体的JS标签...

    JavaScript中三个等号和两个等号的区别(== 和 ===)浅析

    双等号“==”是JavaScript中的相等运算符,它用于比较两个值是否在逻辑上相等,但可能会发生类型转换。当使用“==”运算符比较两个不同类型的值时,JavaScript会尝试进行类型转换,以便将一个值转换为另一个值的类型...

    奉献给JavaScript初学者的编写开发的七个细节

    (1)简化代码 JavaScript定义对象和数组非常简单,我们想要创建一个对象,一般是这样写的: 代码如下: var car = new Object(); car.colour = ‘red’; car.wheels = 4; car.hubcaps = ‘spinning’; car.age = 4; ...

    JavaScript代码加密与解密方法剖析.pdf

    (3)使用 JavaScript 加密库 JavaScript 加密库是专门用于加密 JavaScript 代码的库。例如,使用 JavaScript 加密库对 JavaScript 代码进行加密,得到的密文如下: var encryptedCode = encryptJavaScriptCode(...

    用javascript(C#)操作 asp .net 的DropDownList控件

    本文将深入探讨如何使用JavaScript(配合C#)来操作这种控件,以实现更丰富的交互功能和动态更新。 首先,了解DropDownList的基本使用。在ASP.NET页面上,我们可以通过以下方式声明一个DropDownList: ```asp.net ...

    页面时间控件(DotNet版).Net版

    <script language="JavaScript" type="text/javascript" src="js/dateTimePicker.js"> <form id="form1" runat="server"> 从<asp:TextBox ID="tb_startDate" runat="server" onclick="setday(this)" ></asp:...

    domino xpages开发 引用JS和CSS

    在Domino XPages开发中,引用JavaScript(JS)和 Cascading Style Sheets(CSS)是构建交互式和美观用户界面的关键步骤。以下是如何在XPages环境中有效地引用这些资源的详细说明。 1) 直接在代码中引用: 这种方法...

    dtcms常用操作文档

    新闻浏览次数:<script type="text/javascript" src="{config.webpath}tools/submit_ajax.ashx?action=view_article_click&id={model.id}&click=1"></script> 新闻评论人数:<script type="text/javascript" src="{...

    asp产品展示网页生成.rar

    功能说明: ============================= 1、产品栏目二级分类,随意添加修改。 2、采用eWebEditor编辑器,功能强大,支持图片、附件上传... <script language="javascript" src="news/dy.asp"></script> 调用全部产品

    JavaScript面向对象

    在JavaScript中定义JavaScript对象有两种方式: 方式一: var Book ={ getBookName:function(){ alert("获取书的名称") ; } }; 方式二 var oBook = function(){}; oBook.getBookName=...

    java-ast:适用于JavaScriptTypeScript的Java解析器(基于antlr4ts)

    用于JavaScript / TypeScript的Java Parser,也基于 ,语法也来自(因此请报告错误并打开与上游语法相关的请求) 使用范例 import { parse , createVisitor } from 'java-ast' ; const countMethods = ( source : ...

    手机后台DEMO

    比如你的INPUT是:<input type="text" name="userName">那么你在里边加入:onKeypress="javascript:if(event.keyCode == 32)event.returnValue = false;"成为:<input type="text" name="userName" onKeypress=...

    javascript等号运算符使用详解

    本章节介绍一下javascript中等号运算符的用法,需要的朋友可以做一下参考。 等号运算符最为基本的用法就是比较两个运算数是否相等,看如下代码实例: 代码如下: var a=2,b=2; console.log(a==b); 如果两个操作数...

    判断JavaScript中的两个变量是否相等的操作符

    可能有些同学看到这个标题就会产生疑惑,为什么我们要判断JavaScript中的两个变量是否相等,JavaScript不是已经提供了双等号“==”以及三等号“===”给我们使用了吗? 其实,JavaScript虽然给我们提供了相等运算符,...

    SELENIUM中文教程

    - **DOM定位**:`dom=javascriptExpression`,使用JavaScript表达式来定位元素。表达式需以“document”开头。 - **XPath定位**:`xpath=xpathExpression`,利用XPath表达式定位元素,表达式需以“//”开头。 - *...

    mcserverstatus:一个用于更改服务器播放器列表的javascript函数

    无需检查或自定义插件即可检查Minecraft服务器播放器列表中更改的javascript函数。 用法 mcstatus(选项,回调) 选项可以是一个对象: var options = { name : 'name' , ip : 'ip' } 或对象数组: var ...

    javascript-jokes:如果您知道JS的笑话(或可怕的话),则公关您的笑话。 我将其发布在编码山谷的insta页面上

    JavaScript笑话°•如果您知道一个很好的(或可怕的)笑话,请发送公关给我!!! 提交自己的! 如果它们让我发笑,我将合并它们并将其发布在codingvalley的insta页面上。新的React UI笑话里迪:我 :red_heart: ...

    JavaScript学习基础学习心得

    ### JavaScript 学习基础心得 在深入探讨JavaScript的基础深度原理之前,我们首先了解JavaScript的一些基本概念,这将有助于我们更好地理解和应用这些高级知识点。 #### 浏览器组成 浏览器是JavaScript运行的重要...

    JavaScript-Goodies:收集JavaScript的好东西,从地图到传播算子| :hammer_and_wrench:关于工作

    let list = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] ; list = list . sort ( ( ) => Math . random ( ) - 0.5 ) ; console . log ( list ) ; // 1st [ 1, 9, 7, 8, 4, 2, 3, 5, 6 ] // 2nd [ 7, 8, 4, 3, 6, 9, 5, 2...

    js利用google翻译接口把网页翻译成各国语言

    ### JavaScript 实现网页内容通过Google翻译接口转换为多种语言 #### 概述 在现代互联网应用中,国际化和多语言支持对于吸引全球用户至关重要。利用JavaScript(简称JS)结合Google翻译API可以实现在网页上自动...

Global site tag (gtag.js) - Google Analytics