Javascript 柴图书馆equal和eql的区别是什么
我对JavaScript非常陌生,我有一个关于用于进行单元测试的Chai库的快速问题 当我研究柴图书馆的一些资料时,我看到一份声明说:Javascript 柴图书馆equal和eql的区别是什么,javascript,unit-testing,chai,Javascript,Unit Testing,Chai,我对JavaScript非常陌生,我有一个关于用于进行单元测试的Chai库的快速问题 当我研究柴图书馆的一些资料时,我看到一份声明说: :断言目标严格地等于给定值 :断言目标深度等于值 我搞不清楚严格和深度严格相等(或==)之间的区别是什么,这意味着您将完全相同的对象与自身进行比较: var myObj = { testProperty: 'testValue' }; var anotherReference = myObj; expect(myObj).to.equal(anoth
- :断言目标严格地等于给定值
- :断言目标深度等于值
我搞不清楚严格和深度严格相等(或
==
)之间的区别是什么,这意味着您将完全相同的对象与自身进行比较:
var myObj = {
testProperty: 'testValue'
};
var anotherReference = myObj;
expect(myObj).to.equal(anotherReference); // The same object, only referenced by another variable
expect(myObj).to.not.equal({testProperty: 'testValue'}); // Even though it has the same property and value, it is not exactly the same object
深度相等另一方面,表示比较对象(以及可能的深度链接对象)的每个属性具有相同的值。因此:
var myObject = {
testProperty: 'testValue',
deepObj: {
deepTestProperty: 'deepTestValue'
}
}
var anotherObject = {
testProperty: 'testValue',
deepObj: {
deepTestProperty: 'deepTestValue'
}
}
var myOtherReference = myObject;
expect(myObject).to.eql(anotherObject); // is true as all properties are the same, even the inner object (deep) one
expect(myObject).to.eql(myOtherReference) // is still also true for the same reason
老实说,这是一个可怕的惯例。我认为只应使用
equal
和deepEqual
。