我需要一个功能:

function isSame(a, b){
}

其中,如果a和b相同,则返回true。
,我尝试了return a === b,但是我发现[] === []将返回false。
我希望此功能可以提供一些结果:
isSame(3.14, 3.14);  // true
isSame("hello", "hello"); // true
isSame([], []); // true
isSame([1, 2], [1, 2]); // true
isSame({ a : 1, b : 2}, {a : 1, b : 2}); //true
isSame([1, {a:1}], [1, {a:1}]);  //true

最佳答案

克罗克福德(Crockford)的网站上有一些根据计划改编的示例。具体来说,请查看:

function isEqual(s1, s2) {
    return isAtom(s1) && isAtom(s2) ? isEqan(s1, s2) :
            isAtom(s1) || isAtom(s2) ? false :
            isEqlist(s1, s2);
}
都可以在这里找到:
http://javascript.crockford.com/little.js
这是一个工作示例:
http://jsfiddle.net/FhGpd/
更新:
刚写了一些基于OP的测试用例。原来我需要修改sub1函数以检查
10-07 14:39