使用 null 检查时,javascript中的下一个if语句有什么区别?
var a = "";
if( a != null ) // one equality sign
....
if( a !== null ) // two equality sign
....
当与null比较时,我找不到任何差异。
答案 0 :(得分:0)
在JavaScript中,null
的类型为:object
(请尝试执行以下句子typeof null
)。
也就是说,!==
会在检查引用是否等于之前检查a
是否也是object
。
实际上,您知道===
和!==
旨在检查相等的左侧和右侧是否具有相同类型,而不涉及隐式转换。例如:
"0" == 0 // true
"0" === 0 // false
相同的推理适用于null
检查。
答案 1 :(得分:0)
根据http://www.w3schools.com/js/js_comparisons.asp
!= - not equal
!== - not equal value or not equal type
答案 2 :(得分:0)
!=
检查
消极平等
而!==
检查
否定身份
例如,
var a = "";
a != false; //returns false since "" is equal false
a !== false; //returns true since "" is not same as false
但是如果你将它与null进行比较,那么两个值都将为真,因为""
既不等于也不等于null
答案 3 :(得分:0)
与 null 比较时,它们之间没有区别。
当我们使用strict equality(!== )时很明显,因为它们有不同的类型,但是当我们使用loose equality时(!= )关于JavaScript语言设计,重要的是要记住。
由于语言设计,还存在一些常见问题:
答案 4 :(得分:0)
var a = "";
(1) if( a != null ) // one equality sign
Above condition(1) checks value only and not data-type, this will return true.
....
(2) if( a !== null ) // two equality sign
This checks value and data-type both, this will true as well.
更准确地理解它,
var a = "1";
if( a == 1) {
alert("works and doesn't check data type string");
}
if( a === 1) {
alert('doesn't works because "1" is string');
}
if( a === "1") {
alert('works because "1" is string');
}
答案 5 :(得分:0)
如果变量的值未定义,则存在差异:
var a = undefined;
if( a != null ) // doesn't pass
console.log("ok");
if( a !== null ) // passes
console.log("ok");
从阅读这篇精彩文章Why ==null, Not ===null中得到了一些想法。还!=更快。