JS引擎如何实际比较对象(例如函数声明)的相等性?
var f1 = function(){};
var f2 = function(){};
console.log(f1 === f2); //false
实际上在幕后是怎样确定对象引用不同的?它是比较内存位置吗?
var f1 = function(){};
var f2 = function(){};
console.log(f1 === f2); //false
实际上在幕后是怎样确定对象引用不同的?它是比较内存位置吗?
函数是对象。
不同实例的对象永远不会严格相等(或非严格相等)。
通过指针应用严格相等:
var a = b = {}, c = {};
console.log(a === b, a === c); // true false
toString
的方法,但似乎是真的。=) - vp_arthvar foo = function() {
a = 1;
};
var bar = function() {
a = 1;
};
alert(foo.toString() == bar.toString());
这将返回真。
a
的赋值来优化您的代码。 - vp_arthfoo.toString().replace(/\s+/g, ' ')
可能更好。 - vp_arth==
检查值是否相等
===
检查值是否相等,同时检查变量类型或返回类型
new Object() === new Object()
,那为什么你会期望new Function() === new Function()
呢? - zzzzBov