嚴格或寬鬆的比較操作符(在===
和==
)都是無用的,如果你想比較對象或數組。像數組和對象一樣容易。
例如,這是所有真正:
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的比較的差異。
來源
2017-03-28 14:24:08
rsp
用'==='嘗試任何[isequal文檔](https://www.npmjs.com/package/is-equal)的例子。例如'/ a/===/a /'。你會看到的。 –
兩個對象通過引用進行比較。這就是爲什麼'==='和'=='都不適用於涉及對象的測試。 –
@DenysSéguret我試過了。試想一下,也許在幕後還有其他東西,我需要知道使用它。 –