`

JavaScript中相等、严格相等比较规则

阅读更多
《JavaScript权威指南》笔记,修改了部分措辞和错误。
“==”:相等;“===”:严格相等。
 
     JavaScript对象的比较是引用的比较,而不是值的比较。对象与其本身是相等的,但和其他任何对象都不想等。如果两个不同的对象具有相同数量的属性、相同的属性名和值,它们依然是不相等的。相应位置的数组元素相等的两个数组也是不相等的。
     
严格相等运算符“===”首先计算其操作数的值,然后比较这两个值,比较过程中没有任何类型转换:
  • 如果两个值类型不相同,则它们不相等。
  • 如果两个值都是null或者都是undefined,则它们相等。
  • 如果两个值都是布尔值true或都是布尔值false,则它们相等。【注1】
  • 如果其中一个值是NaN,或者两个值都是NaN,则它们不相等。NaN与其他任何值都是不相等的,包括其自身!通过x!==x来判断x是否NaN,只有在x未NaN的时候,这个表达式的值才为true。
  • 如果两个值均为数字且数值相等,则它们相等。如果一个值为0,另一个值为-0,则它们同样相等。
  • 两个值为字符串,如果所含对应位上的十六进制数完全相等,则它们相等。
  • 两个值指向同一个对象、数组或函数,则它们完全相等。
 
相等运算符“==”,如果两个操作数不是同一类型,则会先尝试转换类型再进行比较:
  • 两个操作数类型相同,则按照上述严格相等的规则进行比较。
  • 如果两个操作数类型不同:
     ——分别为null跟undefined,相等。
     ——分别为字符串和数字,则现将字符串转换为数字再比较。
     ——分别将true转换为1,false转换为0,再进行比较。
     ——一个操作数为对象,另一个为字符串或数字,则按照JS自身规则将对象转换成原始值(依据toString()和valueOf()两个函数)。
 
例子:"1" == true
 
注释:
1.在《JavaScript权威指南》中此处是“不相等”,实测结果确实是“相等”,我认为是翻译失误,读者如果有不同意见欢迎指正。
又注:“typeof null”返回“object”可见null是一个特殊对象;undefined不是关键字,是一个预定义的全局变量。
 
资料参考:
分享到:
评论

相关推荐

    javascript相等运算符与等同运算符

    在JavaScript编程语言中,相等运算符(`==`)与等同运算符(`===`)是两个非常重要的概念,它们用于判断两个值是否相等,但它们的比较方式和逻辑有所不同,这一点对于理解JavaScript的数据类型转换和比较规则至关...

    JS 宽松相等和严格相等

    在JavaScript编程语言中,"宽松相等"和"严格相等"是两种不同的比较运算符,它们用于判断两个值是否相等。理解这两者的区别对于编写健壮的代码至关重要。 宽松相等运算符(==)在进行比较时,会尝试进行类型转换,以...

    JavaScript中判断两个字符串是否相等的方法

    总结来说,在JavaScript中判断两个字符串是否相等,不仅要考虑使用哪种相等性运算符,还要注意可能需要进行的类型转换以及区域设置对字符串比较的影响。理解这些基本概念对于编写健壮且可靠的JavaScript程序是非常...

    Javascript学习笔记之相等符号与严格相等符号

    本文介绍了JavaScript编程语言中的两个用于比较操作的重要概念:相等符号(==)和严格相等符号(===)。在JavaScript中,比较两个值是否相等是经常会遇到的操作,而JavaScript提供了两种不同的方法来进行这样的操作...

    sonar-Web_JavaScript检查规则指南.docx

    with 语句会在 JavaScript 严格模式代码中产生错误。使用 with 可以快速访问对象的属性-假设它们已经设置。然而,使用 with 来访问尚未在对象中设置的某些属性,突然之间,您就跳出了对象范围,进入了全局范围,在...

    javascript中的相等操作符(==与===区别).docx

    在JavaScript编程中,比较两个变量是否相等是非常常见的需求。ECMAScript提供了两种主要的相等操作符:“==”(相等)和“===”(全等),它们在逻辑判断和数据验证等方面发挥着重要作用。正确理解并使用这两种操作...

    js判断数组是否相等的方法

    在JavaScript中,判断两个数组是否相等是一个常见的需求,尤其在处理数据比较或者验证时。根据标题和描述,我们可以区分两种不同的场景: 1. **数组完全相等**:在这种情况下,不仅要求数组中的元素相同,而且元素...

    JavaScript比较两个对象是否相等的方法

    本文实例讲述了JavaScript比较两个对象是否相等的方法。分享给大家供大家参考。具体如下: 在Python中可以通过cmp()内建函数来比较两个对象所包涵的数据是否相等(数组、序列、字典)。但是在javascript语言中并没有...

    JavaScript相等运算符的九条规则示例详解

    - 如果两个值的类型相同,就使用严格相等运算符的比较规则。 - 如果类型不同,会尝试将它们转换成相同的类型后进行比较。 - 对象和原始类型值比较时,会将对象转换成原始类型值,然后再进行比较。如果转换后的原始...

    js中怎么判断两个字符串相等的实例.docx

    在JavaScript中,判断两个字符串是否相等是编程中常见的任务,尤其在处理用户输入或比较文本数据时。本文将深入探讨在JavaScript中如何正确地进行字符串比较,并介绍两种主要的操作符:`==`(等同操作符)和`===`...

    javascript中比较字符串是否相等的方法

    JavaScript中比较字符串是否相等的方法主要有几种,包括使用等号操作符"=="、全等操作符"==="、localeCompare()方法以及一些其他技术手段。不同的比较方法在实际应用中可能会有不同的适用场景和优势,下面将详细介绍...

    JavaScript中的比较操作符>、<、>=、<=介绍

    - 0和-0的比较:在JavaScript中,0和-0被视为相等,因此0 >= -0为true,而0 > -0为false。 4. 示例代码分析 - `var d = new Date();` 创建一个Date对象实例。 - `var s1 = "Thu Mar ***:57:11 GMT+0800 (CST)";`...

    一个微小的247B的工具类用于深度判断值是否相等

    在JavaScript中,这些特殊类型的比较往往需要特别处理,因为它们的比较规则不同于常规的基本类型。例如,NaN不等于自身,null和undefined之间的比较也会有特殊的逻辑。 在JavaScript中,简单的`==`和`===`操作符并...

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

    在JavaScript编程中,比较运算符用于比较两个值是否相等。其中,最常用的比较运算符是双等号“==”和三等号“===”。这两个运算符虽然看似相似,但它们在比较值时却有着本质的区别。了解它们的不同用法,对于编写高...

    JavaScript 更严格的相等 [译]

    1.检测NaN 在数学上,任意值x总是与自己相等: x = x 但这条规则并不适用于 === 和 NaN: 代码如下: > NaN === NaN false 导致的结果就是,你不能通过使用indexOf方法在一个包含了NaN的数组中找到这个NaN,因为该方法在...

    Javascript中的相等与不等运算

    在JavaScript编程语言中,比较两个数据是否相等是一个重要的概念,它涉及到两种运算符:相等运算符(==)和全等运算符(===)。两者之间的区别在于是否考虑数据类型转换。 相等运算符(==)用于比较两个值是否相等...

    编写可维护的JavaScript(中文)

    《编写可维护的JavaScript》向开发人员阐述了如何在团队开发中编写具备高可维护性的JavaScript代码,书中详细说明了作为团队一分子,应该怎么写JavaScript。本书内容涵盖了编码风格、编程技巧、自动化、测试等几方面...

Global site tag (gtag.js) - Google Analytics