javascript的三个等号(===)的作用:
在代码中,经常需要去比较两个操作数是否相等,javascript提供了两种比较运算符,一个是使用最为频繁的普通等号运算符(==),另一个是使用虽然不如第一个频繁,但是比较规则要严格的全等运算符(===)。
一.普通等号运算符:
此运算符的比较规则比较松散,因为在进行比较之前,两个操作数要进行数据类型转换。
规则如下:
1.如果操作数中有布尔值,则先将此布尔值转换为数值类型。true转换为1,false转换为0。
2.如果操作数中,一是数字,一个是字符串,那么在比较之前,会尝试将字符串转换成数字。
3.如果操作数中,一个是字符串,一个是对象,那么在比较之前,会尝试将对象转换成字符串。
4.如果操作数中,一个是数字,一个是对象,那么在比较之前,会尝试将对象转换成数字。
代码实例:
true==1;//true 10==10;//true "10"==10;//true var a={x:10} var b={x:10} a.x==b.x;//true
从以上代码可以看出,由于执行了数据类型转换,那么比较规则也相对宽松,字符串也可以与数值类型相等。
二.全等运算符:
此中运算符比较规则比较严格,主要是因为在比较之前,两个操作数不会进行数据类型转换。
代码实例:
true===1;//false 10===10;//true "10"===10;//false var a={x:10} var b={x:10} a.x===b.x;//true
以上代码和第一个代码实例唯一的不同就是将普通的运算符替换为全等运算符,但是结果却有很大的不同。
分析如下:
1.true===1;//false,由于不进行类型转换,自然不会相等。
2.10===10;//true,10与10相等,这个不用多说。
3."10"===10;//false,由于不进行类型转化,字符串"10"自然与数值10不相等。
4.a.x===b.x;//true,由于a.x的值是10,b.x值也是10,它们自然相等。
以上理解起来没有任何问题,再来看一段代码实例:
var a={x:10} var b={x:10} c=a; c===a//true; a===b//flase
在以上代码中,由于c和a都是指向同一个对象的,所以是全等的,a和b们两个并不是指向同一个对象的所以它们两个是全等的。
特别说明:两个对象比较的是指向两个对象的引用,如果都指向同一个对象。
两种运算符的一些特殊情况:
1.null与undifined:
null==undifined //true null===undifined //false
2.如果其中的一个运算数是NaN,则不相等:
NaN===NaN//false NaN==NaN//false
原文地址是:http://www.51texiao.cn/javascriptjiaocheng/2015/0430/486.html
最原始地址是:http://www.softwhy.com/