美文网首页
JavaScript中双等号(==)的比较机制

JavaScript中双等号(==)的比较机制

作者: 流浪的三鮮餡 | 来源:发表于2019-07-15 22:08 被阅读0次

ECMAScript中提供两组操作符:相等不相等——先转换再比较,全等不全等——仅比较而不转换。

相等和不相等

ECMAScript中的相等操作符由两个等于号(==)表示,如果两个操作数相等,则返回true。而不相等操作符由叹号后跟等于号(!=)表示,如果两个操作数不相等,则返回true。这两个操作符都会先转换操作数(通常称为强制转型),然后再比较它们的相等性。

在转换不同的数据类型时,相等和不相等操作符遵循下列基本规则:

  • 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,而true转换为1;
  • 如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值;
  • 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较;
    这两个操作符在进行比较时则要遵循下列规则:
  • nullundefined是相等的;
  • 要比较相等性之前,不能将nullundefined转换成其他任何值;
  • 如果有一个操作数是NaN,则相等操作符返回false,而不相等操作符返回true。重要提示:即使两个操作数都是NaN,相等操作符也返回false,因为按照规则,NaN不等于NaN
  • 如果两个操作数都是对象,则比较他们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true。否则,返回false

下表列出了一些特殊情况及比较结果:

表达式 表达式
null == undefined true true == 1 true
"NaN" == NaN false true == 2 false
5 == NaN false undefined == 0 false
NaN == NaN false null = 0 false
NaN != NaN true "5" == 5 true
false == 0 true

全等和不全等

全等操作符由3个等于号(===)表示,它只在两个操作数未经转换就相等的情况下返回true。这里不做阐述,有兴趣的朋友可阅读其他相关资料

相关文章

  • JavaScript中双等号(==)的比较机制

    ECMAScript中提供两组操作符:相等和不相等——先转换再比较,全等和不全等——仅比较而不转换。 相等和不相等...

  • vscode主题颜色

    vscode主题颜色 prototype javascript双等号引起的类型转换,js隐性类型转换步骤 code...

  • Javascript 中连等号的使用

    是该叫连等号吗?还是叫一次初始化多个值,哎,先将就了。 场景一 有时可能会有这样的需求,a、b两个变量初始化的值都...

  • JavaScript基础运算符

    等号'=',在JavaScript中一个等号意为赋值,就是将等号右侧的值赋值给等号左侧的值。** 若我们想判断a是...

  • 面试题

    1. ==和===的区别? 答: ==用于一般比较,===用于严格比较。这么理解: 当进行双等号比较时候: 先检查...

  • 小误区和小知识

    == ===JavaScript中三个等号和两个等号的区别(== 和 ===)== equality 等同,=...

  • JavaScript里面三个等号和两个等号的区别

    JavaScript里面三个等号和两个等号的区别 == equality 等同,=== identity 恒等。 ...

  • 关于js中的双等号问题

    js中存在==和===两种校验是否相等的运算符。 ==代表值相等 ===代表值和类型都相等 由于双等号的存在,使用...

  • 在JavaScript中为什么推荐使用 === 运算符

    ​在JavaScript 中存在着三种等号运算符,分别为:= ;== ;=== 。一个等号的是赋值运算符, 两个等...

  • JavaScript中的比较

    JS中的比较 ==与=== ==会进行类型转换,所以结果为true ===会判断内容和类型是否匹配,所以结果为fa...

网友评论

      本文标题:JavaScript中双等号(==)的比较机制

      本文链接:https://www.haomeiwen.com/subject/wwynkctx.html