美文网首页
第三章 JavaScript基本概念(四)

第三章 JavaScript基本概念(四)

作者: 伊凡的一天 | 来源:发表于2018-04-30 22:01 被阅读7次

4. 操作符

4.6 关系操作符

  关系操作符(<,>,<=,>=)用于对两个值进行比较,比较的规则与我们数学课上所学的一样。当操作数使用了非数值时,也要进行相应的数据转化。以下是相应的比较规则:

  • 两个操作数都是数值,则执行数值比较
  • 两个操作数都是字符串,比较两个字符串的字符编码值
  • 如果一个操作数是数值,则将另一个操作数转换为数值,然后执行数值比较
  • 如果一个操作数是对象,则调用操作数的valueOf()方法,用得到的结果按照前面的规则进行比较。如果对象没有valueOf()方法,则调用toStirng()方法,然后用得到的结果按照前面的规则进行比较。
  • 如果一个操作数是布尔值,则先将其转换为数值,然后再执行比较

任何操作数与NaN进行比较,结果都是false

4.7 相等操作符

  ECMAScript提供了两组相等操作符,==和===。==操作符在比较两个操作数前,会先将两个操作数转换为相同类型然后执行比较。而===操作符仅比较而不转换。
在转换不同的数据类型时,相等(==)和不相等(!=)操作符遵循以下规则:

  • 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值(false=>0,true=>1)。
  • 如果一个操作数是字符串,另一个操作数是数值,在比较相等性时将字符串转换为数值。
  • 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型按照前面的规则进行比较。
  • null和undefined是相等的
  • 比较相等性时,不能将null和undefined转换为其他任何值
  • 如果一个操作数时NaN,相等操作返回false。不相等操作返回true
  • 如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数指向同一个对象,相等操作返回true,否则返回false

除了在比较前不转换操作数之外,全等(===)和不全等(!==)操作符与相等和不相等操作符没有任何区别。例如:

var rs1 = ("55" == 55);  //true
var rs2 = ("55" === 55);  //false
var rs3 = (undefined == null);  //true
var rs4 = (undefined === null);  //false

由于相等和不相等操作符存在类型转换问题,而为了保持代码中数据类型的完整性,我们推荐使用全等和不全等操作符。

相关文章

网友评论

      本文标题:第三章 JavaScript基本概念(四)

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