【发布时间】:2013-01-21 19:55:54
【问题描述】:
谁能解释一下 Internet Explorer 和 Firefox 在以下方面的行为差异:
var myNamespace = (function () {
var exposed = {};
exposed.myFunction = function myFunction () {
return "Works!";
}
console.log(myFunction());
// IE: "Works!"
// Firefox: ReferenceError: myFunction is not defined
console.log(exposed.myFunction());
// IE: "Works!"
// FF: "Works!"
return exposed;
})();
console.log(myNamespace.myFunction());
// IE: "Works!"
// FF: "Works!"
在 Internet Explorer 中,此方法允许我使用 myFunction() 或 exposed.myFunction() 从命名空间函数内部调用我的函数。
在我的命名空间函数之外,我可以使用myNamespace.myFunction()
在 Firefox 中,结果是相同的,只是裸命名函数调用不起作用。
应该有效吗?如果不应该,那为什么不呢?
如果应该那么这是一个已知的错误吗?
【问题讨论】:
-
tl;dr:不,它不应该工作,这是 IE 中的一个错误。
-
OT:不要为数组分配任意属性,只使用数字属性名称。如果要分配任意属性,请改用对象。见developer.mozilla.org/en-US/docs/JavaScript/Guide/…。
-
同意。我已经把它改成了一个对象,这本来就是要放在首位的。
标签: javascript internet-explorer firefox cross-browser