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

Difference between exclamation equals sign and exlamation 2x equals sign when checking with null

本文关键字:符号 于符号 2x exlamation 之间 感叹 null 进行检查      更新时间:2023-09-26

在使用null进行检查时,javascript中的next-if语句之间有什么区别?

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

当与null进行比较时,我找不到任何区别。

根据http://www.w3schools.com/js/js_comparisons.asp

!=  - not equal
!== - not equal value or not equal type

在JavaScript中,null的类型为:object(请尝试执行以下句子typeof null)。

也就是说,在检查引用是否相等之前,!==将检查a也是object

实际上,您知道===!==用于检查等式的左侧和右侧是否具有相同的类型,而不涉及隐式转换。例如:

"0" == 0 // true
"0" === 0 // false

同样的推理适用于null检查。

!=检查

负相等

而CCD_ 11检查

负同一

例如,

var a = "";
a != false; //returns false since "" is equal false
a !== false; //returns true since "" is not same as false

但如果您将其与null进行比较,则该值在两个会话中都将为true,因为""既不等于也不等于null

null相比,它们之间没有区别。

当我们使用严格相等(!=)时,这是显而易见的,因为它们有不同的类型,但当我们使用松散相等(!=)时记住关于JavaScript语言设计是一件重要的事。

由于语言设计的原因,还有一些常见的问题:

  • 如何在JavaScript中检查空字符串?

  • 是否有标准函数来检查JavaScript中的null、未定义或空白变量?

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');
}

如果变量的值未定义,则存在差异:

var a = undefined;
if( a != null ) // doesn't pass
  console.log("ok");
if( a !== null ) // passes
  console.log("ok");

从阅读这篇伟大的文章中得到了想法Why==null,Not====null。还有!=速度更快。