有人能解释一下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中,结果相同,但是裸的函数调用不起作用。
这个应该工作吗?如果不应该,为什么?
如果应该,那么这是一个已知的bug吗?