`

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 使用误区

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

    JavaScript基础到高级:仅使用===> Jhankar Mahbub学习源代码

    JavaScript是一种广泛应用于网页和网络应用的编程语言,尤其在客户端脚本方面发挥着核心作用。Jhankar Mahbub的学习源代码提供了从基础到高级的JavaScript知识体系,旨在帮助开发者深入理解并熟练掌握这种语言。 一...

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

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

    页面时间控件(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) 直接在代码中引用: 这种方法...

    asp产品展示网页生成.rar

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

    ASPX弹出窗口

    3. AJAX异步更新: 为了实现无刷新的用户体验,我们可以结合AJAX技术进行异步更新。`UpdatePanel`控件允许我们在弹出窗口中进行部分页面更新,而无需刷新整个页面。`MessageBox.cs`文件可能包含使用`UpdatePanel`的...

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

    在JavaScript中,判断值相等有两种操作符,即双等号(==)和三等号(===)。双等号操作符用于值相等的判断,而三等号则用于严格相等的判断,包括值和类型两方面。双等号会进行类型转换,而三等号不会。了解双等号的...

    javascript等号运算符使用详解

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

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

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

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

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

    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-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...

    VB转javascript代码帮助下载

    ActiveDocument.Tables.AddRange := Selection.Range, NumRows:=3, NumColumns:=3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed With Selection.Tables(1) If .Style <> "网格...

    JavaScript学习笔记.pdf

    JavaScript 使用关键字 var 定义变量,使用等号为变量赋值,例如:<script>var length;length = 8; 3、JavaScript 操作符: JavaScript 有多种类型的运算符,例如算术运算符、比较运算符、逻辑运算符等。 4、...

    自动交易:交易视图策略=Bitfinex、itBit、DriveWealth_JavaScript_下载.zip

    自动交易:交易视图策略=Bitfinex、itBit、DriveWealth_JavaScript_下载.zip

Global site tag (gtag.js) - Google Analytics