我很抱歉问这么简单的问题,但希望,它也会帮助别人。
玩&mjackson / expect'发现toEqual((value,[message])函数使用' is-equal'模块进行比较。
如果我们可以使用严格的比较' ===',那么在模块的npm页面上使用这样的库有什么意义呢?概念上是平等的'或简单的' =='?
答案 0 :(得分:2)
如果要比较对象或数组,则严格或松散的比较运算符(分别为===
和==
)都无用。该模块可让您轻松比较数组和对象等内容。
例如,这是真的:
1 == 1
1 === 1
'abc' == 'abc'
'abc' === 'abc'
true == true
true === true
null == null
null === null
但在JavaScript中这总是错误的:
[1, 2, 3] == [1, 2, 3]
[1, 2, 3] === [1, 2, 3]
{a: 1, b: 2} == {a: 1, b: 2}
{a: 1, b: 2} === {a: 1, b: 2}
/.*/ == /.*/
/.*/ === /.*/
new Date('2017') == new Date('2017')
new Date('2017') === new Date('2017')
并且您经常需要将一个对象与另一个对象进行比较,尤其是在单元测试中。使用==
和===
运算符,您无法将数组或对象与某些预期值进行比较,但使用is-equal
可以轻松地比较它们。
但是当你使用let equal = require('is-equal');
时 - 这都是真的:
equal(1, 1)
equal('abc', 'abc')
equal(true, true)
equal(null, null)
equal([1, 2, 3], [1, 2, 3])
eqial({a: 1, b: 2}, {a: 1, b: 2})
equal(/.*/, /.*/)
equal(new Date('2017'), new Date('2017'))
并且您不需要关心JavaScript中不同类型的比较差异。