什么是 'conceptually equal'(来自 npm 的 'is-equal' 模块)与 '==='/'=='。 JavaScript。对象比较。
What is 'conceptually equal' ('is-equal' module from npm) vs '==='/'=='. JavaScript. Objects comparison.
很抱歉问这么简单的问题,但希望它也能帮助别人。
使用 'mjackson/expect' 发现 toEqual((value, [message]) 函数使用 'is-equal' 模块进行比较。
使用这样的库有什么意义?'conceptually equal',如模块的 npm 页面所述,如果我们可以使用严格比较“===”,或简单的“==”?
如果要比较对象或数组, 严格或宽松的比较运算符(分别为 ===
和 ==
)都是无用的。此模块可让您轻松比较数组和对象等内容。
例如,这都是真的:
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中不同类型比较的区别。
很抱歉问这么简单的问题,但希望它也能帮助别人。
使用 'mjackson/expect' 发现 toEqual((value, [message]) 函数使用 'is-equal' 模块进行比较。
使用这样的库有什么意义?'conceptually equal',如模块的 npm 页面所述,如果我们可以使用严格比较“===”,或简单的“==”?
严格或宽松的比较运算符(分别为 ===
和 ==
)都是无用的。此模块可让您轻松比较数组和对象等内容。
例如,这都是真的:
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中不同类型比较的区别。