JS 相等

等于和不等于

ECMAScript的等于操作符使用两个等于号(==),不等于则使用(!=),这两个操作符都会先进行类型转换(强制类型转换)再确定操作数是否相等。

类型转换规则:

  1. 任一操作数为布尔值,先转换为数值再进行比较。false转换为0,true转换为1
  2. 一个操作数为字符串,另一个为数值,则将字符串转换为数值,再进行比较
  3. 一个操作数为对象,另一个不是,则调用对象的valueOf()方法取得原始值,再按照前面的规则进行比较

进行比较时遵循规则:

  1. nullundefined相等
  2. nullundefined不能转换为其他类型的值进行比较
  3. 任一操作数为NaN,相等操作符返回false,不等操作符返回true,因此按照规则,NaN不等于NaN
  4. 两个操作符都是对象,则比较他们是不是同一个对象,如果两个操作符指向同一个对象,则相等操作符返回true

全等与不全等

全等与不全等操作符在比较相等时不转换操作数。

null == undefined; // true
null === undefined; // false

示例:

内容相等的对象不相等, 不是同一个对象
两个不同对象的方法相等,其方法指向同一个对象,ECMAScript中函数是对象
相当于sayName每次都初始化一个新的对象,所以不相等
与上个例子等价

发表评论

电子邮件地址不会被公开。 必填项已用*标注