zoukankan      html  css  js  c++  java
  • ECMAScript 运算符等性运算符

    判断两个变量是否相等是程序设计中非常重要的运算。在处理原始值时,这种运算相当简单,但涉及对象,任务就稍有点复杂。

    ECMAScript 提供了两套等性运算符:等号和非等号用于处理原始值,全等号和非全等号用于处理对象。

    等号和非等号

    在 ECMAScript 中,等号由双等号(==)表示,当且仅当两个运算数相等时,它返回 true。非等号由感叹号加等号(!=)表示,当且仅当两个运算数不相等时,它返回 true。为确定两个运算数是否相等,这两个运算符都会进行类型转换。

    执行类型转换的规则如下:

    • 如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
    • 如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
    • 如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
    • 如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。

    在比较时,该运算符还遵守下列规则:

    • 值 null 和 undefined 相等。
    • 在检查相等性时,不能把 null 和 undefined 转换成其他值。
    • 如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
    • 如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。

    重要提示:即使两个数都是 NaN,等号仍然返回 false,因为根据规则,NaN 不等于 NaN。

    下表列出了一些特殊情况,以及它们的结果:

    image

    全等号和非全等号

    等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是它们在检查相等性前,不执行类型转换。

    全等号由三个等号表示(===),只有在无需类型转换运算数就相等的情况下,才返回 true。

    例如:

    var sNum = "66";
    var iNum = 66;
    alert(sNum == iNum);	//输出 "true"
    alert(sNum === iNum);	//输出 "false"

    在这段代码中,第一个 alert 使用等号来比较字符串 "66" 和数字 66,输出 "true"。如前所述,这是因为字符串 "66" 将被转换成数字 66,,然后才与另一个数字 66 进行比较。第二个 alert 使用全等号在没有类型转换的情况下比较字符串和数字,当然,字符串不等于数字,所以输出 "false"。

    非全等号由感叹号加两个等号(!==)表示,只有在无需类型转换运算数不相等的情况下,才返回 true。

    例如:

    var sNum = "66";
    var iNum = 66;
    alert(sNum != iNum);	//输出 "false"
    alert(sNum !== iNum);	//输出 "true"

    这里,第一个 alert 使用非等号,把字符串 "66" 转换成数字 66,使得它与第二个运算数 66 相等。因此,计算结果为 "false",因为两个运算数是相等的。第二个 alert 使用的非全等号。该运算是在问:"sNum" 与 "iNum" 不同吗?这个问题的答案是:是的(true),因为 sNum 是字符串,而 iNum 是数字,它们当然不同。

  • 相关阅读:
    macOS Big Sur 关闭 SIP 正确方法
    绕过CDN寻找真实IP的8种方法
    mycat 链接mysql提示ERROR 3009 (HY000): java.lang.IllegalArgumentExceptio解决方式
    【SpringBoot】SpringBoot 内嵌容器及性能
    【Java】基于NIO的聊天室
    【Java】基于BIO的聊天室
    【ZooKeeper】ZooKeeper源码编译
    【SpringBoot】 使用外部Tomcat方法及启动原理
    【Java】深入理解SPI机制
    【SpringBoot】SpringBoot 自动配置原理
  • 原文地址:https://www.cnblogs.com/xiaozhanga4/p/2478756.html
Copyright © 2011-2022 走看看