严格的平等是否保证了平等
我开始用Mocha为我的nodeJS / Javascript应用程序编写unit testing。
对于我的平等主张testing,我决定使用
-
assert.strictEqual
testing相等 -
assert.notEqual
testing差异
这背后的想法是强制使用严格的相等运算符( ===
和!==
),但要确保如果使用==
和!=
则不会产生错误。
但是这引起了我一个问题:
对于每一个可能的a
做a === b
意味着a == b
并且做a !== b
意味着a != b
?
===和!==确保不仅项目被认为是“相等的”,而且它们是相同的types – 没有强制types:
"1" == 1 //true "1" === 1 //false
不平等运算符也是一样的:
"2" != 1 //true "2" !== 1 //true "1" != 1 //false "1" !== 1 //true
所以,简短的回答是:“对于每一个可能的情况,a == b表示a === b,而a!= b表示a == b? – 没有
不。例如0 !== false
然后0 == false
。
===
比==
比==
强。 ==
比较只是检查两个值是否相等,根据需要执行types转换。 A ===
比较检查,types和值是相同的。 所以a === b
意味着a == b
,而a != b
意味着a !== b
。
例:
"100" == 100 -> true "100" === 100 -> false "100" != 100 -> false "100" !== 100 -> true