`

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-Equality-Table:(== vs ===)

    本主题将深入探讨JavaScript中的"=="和"==="这两个等号操作符的区别,以及它们在不同情况下的行为。 首先,让我们理解"=="(双等号)操作符。这个操作符用于检查两个值是否相等,但它会进行类型转换。这意味着,...

    javascript的测试题两份

    15、分析javascript代码段,输出结果是: B  var a="125.8765"; c=parseInt(a); d=parseFloat(a); document.write(c+"  "+d) A) 125.8765 126 B) 125 125.8765 C) 125.8765 125 D) 126 125.8765

    JavaScript 使用误区

    在 JavaScript 程序中如果你在 if 条件语句中使用赋值运算符的等号 (=) 将会产生一个错误结果, 正确的方法是使用比较运算符的两个等号 (==)。 if 条件语句返回 false (是我们预期的)因为 x 不等于 10: var x = 0;...

    javascript中的等号和全等号

    在JavaScript编程语言中,等号(`==`)与全等号(`===`)是两种用于比较操作的重要符号。本文将深入探讨这两种符号的区别、应用场景以及如何正确使用它们来提高代码的质量和可读性。 ### 等号 `==` #### 基本概念 ...

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

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

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

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

    浅析Javascript中双等号(==)隐性转换机制

    在Javascript中判断相等关系有双等号(==)和三等号(===)两种。其中双等号(==)是值相等,而三等号(===)是严格相等(值及类型是否完全相等)。 因此有几个常识知识: 1、对于string,number等基础类型,==和===是有区别...

    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="{...

    JavaScript 新手24条实用建议[TUTS+]

    1. 用 === 代替 ==JavaScript里有两种不同的相等运算符:===|!== 和==|!=。相比之下,前者更值得推荐。请尽量使用前者。 引用: “如果两个比较对象有着同样的类型和值,===返回true,!==返回false。”– [removed] ...

    手机后台DEMO

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

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

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

    SELENIUM中文教程

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

    JavaScript解释器js.js.zip

    js.js 是一个用 JavaScript 编写的 JavaScript 解释器 Instead of trying to create an interpreter from scratch, SpiderMonkey is compiled into LLVM and then emscripten translates the output into ...

    JavaScript学习基础学习心得

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

Global site tag (gtag.js) - Google Analytics