Javascript 柴图书馆equal和eql的区别是什么

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

我对JavaScript非常陌生,我有一个关于用于进行单元测试的Chai库的快速问题

当我研究柴图书馆的一些资料时,我看到一份声明说:

  • :断言目标严格地等于给定值
  • :断言目标深度等于值

我搞不清楚严格深度严格相等(或
==
)之间的区别是什么,这意味着您将完全相同的对象与自身进行比较:

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