码迷,mamicode.com
首页 > 编程语言 > 详细

javascript中的==与===

时间:2016-08-02 01:10:11      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

一、主要区别:

1.通俗的来说,==是值的比较,而===不仅仅比较值,还比较引用的是否是同一个对象。

2.用==来比较的时候,如果两个数的操作数的类型不一样,会先转换。而===的操作数则不会进行任何转换。

3.if()里面用的是==判断,case里面用的是===判断。

  例如if(null==undefined) 返回true

  switch(null){

   case "undefined":

    //这里面不会执行

   break;

   }

 

二、===比较详解

1.如果2个值类型不同,则他们不相等。

2.如果两个值都是null,或者undefined,或者一个是null一个是undefined,则他们不相等。

3.如果有一个,或者两个都是NaN,则他们不相等。(NaN和任何对象任何值都不等,包括他本身。如果if(x!==x) 返回true,则说明X为NaN)。

4.如果两个值都是数字且数值相等的话,那么两者也相等。0 和-0也一样相等。

5.如果是字符串,内容、长度、编码不一样的话,那么他们不等。

6.如果两者引用值指向同一引用对象,则他们相等。如果指向不同的引用值,即使他们有完全一样的熟悉,同样也不相等。

 

三、==比较详解

1.如果两个值都是null,或者undefined,则他们相等。

2.如果一个是数字,另一个是字符串,先将字符串转换成数字,再比较。

3.如果其中有一个是boolean值,先把true转为1或者false转为0,再比较。

4.如果一个是对象,一个是数字或者字符串,则先将对象转换成原始值再进行比较。

 

==除了以上4以外,其他的不同类型之前的比较都不等。即使是两个对象类型一样,但不是引用同一个对象,也不一样。

 

四、具体案例

"A"===String("A")//true

"A"===new String("A")//false

[]==[]//false

{}=={}//false

2==[[[[2]]]]//true

var a=/124/,b=/124/;a==b//false

var a = Function.length,b= new Function().lenth;a==b;//false

var a = Date(0),b=new Date(0),c=new Date();//三者任意比较都是false

 

javascript中的==与===

标签:

原文地址:http://www.cnblogs.com/ldld/p/5727538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!