如果我运行以下命令:
var fn = function(){}
(function(){
fn();
}());
它在 Chrome 中抛出“TypeError: undefined is not a function”,在 Firebug 中抛出“TypeError: fn is not a function”。
不fn
应该在这个范围链中可用,而不必这样做window.fn
?
奇怪的是,如果我运行:
var fn = function(){}
console.log(fn);
(function(){
fn();
}());
然后它按预期运行:fn
被记录为一个函数,并且在 Chrome 或 Firefox 中都没有引发错误。
这让我觉得很傻,就像我不应该声称了解 JS。