码迷,mamicode.com
首页 > Web开发 > 详细

js 中 相等(==) 和恒等( === )的区别

时间:2016-04-27 12:26:54      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:

== 在表达式两边的数据类型不一致时,会隐式转换为相同数据类型,然后对值进行比较。

=== 不会进行类型转换,在比较时除了对值进行比较以外,还比较两边的数据类型。

另外,数值是null,"",undefined,Nan的时候,返回的也是false.有时候判断的时候没必要一个个列举出来,一行代码解决的事情,就不要写两行。

console.log(Boolean(null)); //false

console.log(Boolean("")); //false

console.log(Boolean(undefined)); //false

console.log(Boolean(NaN)); //false

console.log(Boolean(1==1)); //true

console.log(Boolean(1=="1")); //true

console.log(Boolean(1===1)); //true

console.log(Boolean(1==="1")); //false

 

再说说,null、NaN和undefined的区别.还从下面运行的代码看起。

var a1; 
var a2 = true; 
var a3 = 1; 
var a4 = "a"; 
var a5 = new Object();
var a6 = null; 
var a7 = NaN; 
var a8 = undefined;
console.log(typeof(a));  // "undefined"
console.log(typeof(a1)); // "undefined"
console.log(typeof(a2)); // "boolean"
console.log(typeof(a3)); // "number"
console.log(typeof(a4)); // "string"
console.log(typeof(a5)); // "object"
console.log(typeof(a6)); // "object"
console.log(typeof(a7)); // "number"
console.log(typeof(a8)); // "undefined"

console.log(Boolean(a1 == a6)); //true
console.log(Boolean(a1 == a7)); //false
console.log(Boolean(a6 == a7)); //false
console.log(Boolean(a7 == a7)); //false

 

可以看出未定义的值和定义未赋值的为undefined,null是一种特殊的object,NaN是一种特殊的number。 

undefined与null是相等;NaN与任何值都不相等,与自己也不相等。 

 

js 中 相等(==) 和恒等( === )的区别

标签:

原文地址:http://www.cnblogs.com/smsli/p/5438312.html

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