关于javascrip ==(等号) 和===(恒等)推断

申明

在JavaScript中,下面的值被当作假(false),除了下面列出的值,都被当作真(true):

  1. false

  2. null

  3. undefined

  4. 空字符串

  5. 数字 0

  6. NaN //属性是代表非数字值的特别值。NaN 与一切值都不相称,包含它自己

  NaN   ===  NaN     //false
  !!NaN === !!NaN    //true

推断划定规矩

  1. ==, 双方值范例差别的时刻,要先举行范例转换,再比较。

  2. ===,不做范例转换,范例差别的肯定不等。

恒等(===)

  1. 假如范例差别,就[不相称]

  2. 假如两个都是数值,并且是同一个值,那末[相称];(!破例)的是,假如个中最少一个是NaN,那末[不相称]。(推断一个值是不是是NaN,只能用isNaN()来推断)

  3. 假如两个都是字符串,每一个位置的字符都一样,那末[相称];不然[不相称]。

  4. 假如两个值都是true,或许都是false,那末[相称]。

  5. 假如两个值都援用同一个对象或函数,那末[相称];不然[不相称]。

  6. 假如两个值都是null,或许都是undefined,那末[相称]

等号(==)

  1. 假如两个值范例雷同,举行 === 比较。

  2. 假如两个值范例差别,他们能够相称。依据下面划定规矩举行范例转换再比较:

    1. 假如一个是null、一个是undefined,那末[相称]。

    2. 假如一个是字符串,一个是数值,把字符串转换成数值再举行比较。

    3. 假如任一值是 true,把它转换成 1 再比较;假如任一值是 false,把它转换成 0 再比较。

    4. 假如一个是对象,另一个是数值或字符串,把对象转换成基本范例的值再比较。对象转换成基本范例,利用它的object.toString()或许object.valueOf()要领。
      《关于javascrip ==(等号) 和===(恒等)推断》

    原文作者:zhangxiaohu
    原文地址: https://segmentfault.com/a/1190000006502875
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞