厳密か緩い比較演算子は(===
概念的に等しいですおよび==
)は、オブジェクトまたは配列を比較したい場合は、両方とも役に立たなくなります。このモジュールでは、配列やオブジェクトのようなものを簡単に再現できます。
1 == 1
1 === 1
'abc' == 'abc'
'abc' === 'abc'
true == true
true === true
null == null
null === null
が、これは常にJavaScriptでfalseになります:
は、例えば、これはすべて真実である
[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でさまざまな種類の比較の違いを気にする必要はありません。
[isequal documentation](https://www.npmjs.com/package/is-equal)の例を '==='で試してみてください。たとえば '/ a/===/a /'とします。わかるでしょ。 –
2つのオブジェクトが参照によって比較されます。そのため、 '==='と '=='のどちらも、オブジェクトに関するテストには役に立ちません。 –
@DenysSéguret私はそれを試しました。ちょうど、多分、私がそれを使用することを知る必要がある場面の裏に何かがあると考えました。 –