当使用null检查时,感叹号等于符号和exlamation 2x之间的差异等于符号

时间:2015-12-09 09:06:41

标签: javascript

使用 null 检查时,javascript中的下一个if语句有什么区别?

var a = "";
if( a != null ) // one equality sign
    ....
if( a !== null ) // two equality sign
   ....

当与null比较时,我找不到任何差异。

6 个答案:

答案 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中得到了一些想法。还!=更快。