== 和 != 规范

  比较数值、字符串、布尔值使用的都是量值。当且仅当两个变量存放的值相等的时候,他们才相等。 

  比较对象、数组、函数的时候,使用的是引用,只有2个变量引用的是同一个对象时,他们才是相等的 。

      两个不同的数组是完全不同的,即使他们具有完全相同的元素。对于存放对象、数组、函数的引用的变量来 

  说,只有当他们引用的是同一个对象、数组、函数的时候,他们才相等。 

  注意!应遵循的原则: 

  当两个运算数的类型不同时:将他们转换成相同的类型, 

  1)一个数字与一个字符串,字符串转换成数字之后,进行比较。 

  2)true转换为1、false转换为0,进行比较。 

  3)一个对象、数组、函数 与 一个数字或字符串,对象、数组、函数转换为原始类型的值,然后进行比较。(先使用valueOf,如果不行就使用toString) 

  4)其他类型的组合不相等。 

  想两个运算数类型相同,或转换成相同类型后: 

  1)2个字符串:同一位置上的字符相等,2个字符串就相同。 

  2)2个数字:2个数字相同,就相同。如果一个是NaN,或两个都是NaN,则不相同。 

  3)2个都是true,或者2个都是false,则想同。 

  4)2个引用的是同一个对象、函数、数组,则他们相等,如果引用的不是同一个对象、函数、数组,则不相同,即使这2个对象、函数、数组可以转换成完全相等的原始值。 

  5)2个null,或者2个都是未定义的,那么他们相等。 

 

== 和 != 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果 。

而 
=== 和 !== 只有在相同类型下,才会比较其值。
 
“false” != false   ------- √ 
posted @ 2017-04-01 15:41  xiiiiiimi  阅读(215)  评论(0编辑  收藏  举报