严格的平等是否保证了平等

时间:2015-11-05 12:30:42

标签: javascript node.js mocha

我开始使用Mocha为我的nodeJS / Javascript应用程序编写单元测试。

对于我的平等断言测试,我决定使用

  • assert.strictEqual来测试平等
  • assert.notEqual测试差异

这背后的想法是强制使用严格相等运算符(===!==),但要确保==和{{1}时不会产生错误使用。

但它引出了一个问题:

对于每个可能的!=a表示a === ba == b表示a !== b吗?

3 个答案:

答案 0 :(得分:3)

===和!==确保这些项目不仅被视为“相等”,而且它们的类型相同 - 没有类型强制执行:

"1" == 1 //true
"1" === 1 //false

不等式运算符也是如此:

"2" != 1 //true
"2" !== 1 //true

"1" != 1 //false
"1" !== 1 //true

所以,简短的回答,“对于每一个可能的a = = b表示a === b并且确实是!= b表示a!== b?” - 不。

答案 1 :(得分:1)

没有。例如0 !== false 0 == false

答案 2 :(得分:1)

===比较强于====比较仅检查两个值是否相等,根据需要执行类型转换。 ===比较检查类型和值是否相同。因此a === b暗示a == ba != b暗示a !== b

示例:

"100" ==  100    ->  true
"100" === 100    ->  false
"100" !=  100    ->  false
"100" !== 100    ->  true