Javascript比较运算符!= vs!==
可能重复:
Javascript === vs ==:这与我使用的“平等”运算符有关吗?
JavaScript和==和===之间的区别
我有两个变量要比较。
结果不应该相等,在哪种情况下我需要使用!=和!==?
因为当我使用这两个操作符它正常工作,但我需要确切知道有什么区别。
关于他们的差异的人类可读文本
使用!==
和===
会比==
/ !=
做更严格的比较。 前者将检查被比较的对象是否具有相同的类型,以及值是否匹配。
使用==
将使隐式转换成为可能,参见下面的例子。
(0 == '0') // true
(0 === '0') // false
('' == 0 ) // true, the string will implicitly be converted to an integer
('' === 0 ) // false, no implicit cast is being made
标准说什么?
11.9.6严格的平等比较
算法比较x === y,其中x和y是值,产生true或false。 这样的比较如下进行:
如果Type(x)是Number,那么
一个。 如果x是NaN,则返回false。
b。如果y是NaN,则返回false。
C。 如果x与y的Number值相同,则返回true。
d。 如果x是+0且y是0,则返回true。
即 如果x是0且y是+0,则返回true。
F。 返回false。
如果Type(x)是String,则返回true,如果x和y是完全相同的字符序列(相同长度和相同位置的相同字符); 否则,返回false。
11.9.3抽象等式比较算法
比较x == y,其中x和y是值,产生true或false。 这样的比较如下进行:
如果类型(x)与类型(y)相同,则
一个。 如果Type(x)未定义,则返回t rue。
湾 如果Type(x)是Null,则返回true。
C。 如果Type(x)是Number,那么
1. If x is NaN, return false.
2. If y is NaN, return false.
3. If x is the same Number value as y, return true.
4. If x is +0 and y is 0, return true.
5. If x is 0 and y is +0, return true.
6. Return false.
d。 如果Type(x)是String,那么如果x和y是完全相同的字符序列(相同长度和相应位置中的相同字符),则返回true。 否则,返回false。
即 如果Type(x)是布尔值,则返回true,如果x和y都为真或者都为假。 否则,返回false。 F。 如果x和y引用同一个对象,则返回true。 否则,返回false。
不同之处在于前者( !=
)版本会在比较之前强制两个变量类型兼容。 因此:
"" == 0 -> true
"" === 0 -> false
另一个版本需要严格的平等 - 两个值必须是相同的类型并且具有相同的值。 大多数情况下,这是你应该使用的。
在对象严格相等的情况下,意味着它们实际上是同一个对象。 对象之间的比较不会执行对象内容的逐场比较。
有关更多信息,请参阅https://developer.mozilla.org/en/JavaScript/Reference/Operators/Comparison_Operators。
区别很简单:!==仅当变量具有相同类型且相等时才返回。
链接地址: http://www.djcxy.com/p/3257.html