什么是';概念上相等';(';等于npm的';模块)与'==='/'==';。JavaScript。对象比较。
我很抱歉问这么简单的问题,但希望它也能帮助别人 使用“mjackson/expect”发现toEqual((值,[message])函数使用“is equal”模块进行比较 如果我们可以使用严格的比较“==”或简单的“==”,那么使用这样的库的意义是什么?如模块的npm页面所述,什么是“概念上相等”什么是';概念上相等';(';等于npm的';模块)与'==='/'==';。JavaScript。对象比较。,javascript,node.js,comparison-operators,Javascript,Node.js,Comparison Operators,我很抱歉问这么简单的问题,但希望它也能帮助别人 使用“mjackson/expect”发现toEqual((值,[message])函数使用“is equal”模块进行比较 如果我们可以使用严格的比较“==”或简单的“==”,那么使用这样的库的意义是什么?如模块的npm页面所述,什么是“概念上相等” ()如果要比较对象或数组,则严格或松散的比较运算符(分别为==和=)都是无用的。此模块允许您轻松比较数组和对象之类的内容 例如,这是完全正确的: 1 == 1 1 === 1 'abc' == 'a
()如果要比较对象或数组,则严格或松散的比较运算符(分别为
==
和=
)都是无用的。此模块允许您轻松比较数组和对象之类的内容
例如,这是完全正确的:
1 == 1
1 === 1
'abc' == 'abc'
'abc' === 'abc'
true == true
true === true
null == null
null === null
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中总是错误的:
[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')
而且您经常需要将一个对象与另一个对象进行比较,尤其是在单元测试中。使用==
和==
运算符,您无法将数组或对象与某些预期值进行比较,但使用等于可以轻松地进行比较
但是当您使用让equal=require('is-equal');
时,这一切都是正确的:
1 == 1
1 === 1
'abc' == 'abc'
'abc' === 'abc'
true == true
true === true
null == null
null === null
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中不同类型的比较的差异。尝试使用===
的任何示例。例如/a/==/a/
。您会看到。两个对象是通过它们的引用进行比较的。这就是为什么==
和=
对于涉及对象的测试都不有用的原因。@De我已经试过了。只是想,也许在幕后还有其他的东西,我需要知道如何使用它。