JavaScript红用于判定==和===的规则

来源:互联网 发布:音效制作软件 编辑:程序博客网 时间:2024/04/30 11:30

1:用于判定==的规则

     (1)如果两个值具有相同的类型,那么就检查它们的等同性,如果这两个值完全相同,它们就相等,如果它们不完全相同,则它们不相等。

      (2)如果两个值的类型不同,它们仍然可能相等,用下面的规则和类型转换来检测他们的想等性:

         -----如果一个值是null,另一个值时undefined,它们相等。

        ------如果一个值是数字,另一个值时字符串,把字符串转换为数字,再用转换后的值进行比较

       -------如果一个值为true,将它转换为1,再进行比较,如果一个值为false,把它转换为0,再进行比较

      -------如果一个值时对象,另一个值是数字或者字符串,将对象转换成原始类型的值,再进行比较。可以使用对象的toString()方法或者

      valueOf()方法把对象转换成原始类型的值,JavaScript核心语言的内部类通常先尝试valueOf()转换,再尝试toString()转换,但是对于Date类

      则先执行toString()转换,不属于JavaScript核心语言的对象则可以采用JavaScript实现定义的方式把自身转换成原始数值


2:用于判定===规则

   (1)如果两个值的类型不同,它们就不同

    (2)如果两个值的类型是数字,,而且值相同,那么除非其中一个或两个都是NaN(这种情况它们是不等同的),

否则它们是等同的,值NaN永远不会与其他任何值等同,包括它自身。要检测一个值是否是NaN,可以使用全局函数isNaN

     (3) 如果两个值都是字符串,而且在串中同一位置上的字符完全相同,那么它们就完全相同,如果字符串的长度或者内容

不同,它们就是不相同的。

    (4)如果两个值都是布尔值true,或者两个值都是布尔值false,那么它们等同。

     (5)如果两个值引用的是同一个对象、数组或者函数,那么它们完全相同,如果它们引用的是不同的对象(数组或者函数),它们就不完全相同,

  即使这两个对象具有完全相同的属性或者两个数组具有完全相同的元素。