对这个javascript闭包模式感到困惑吗
我对这种行为感到困惑:内部函数会立即被调用,而且没有问题。但为什么我必须有一个任务?为什么我不能匿名写 当然,你可以匿名写:对这个javascript闭包模式感到困惑吗,javascript,closures,Javascript,Closures,我对这种行为感到困惑:内部函数会立即被调用,而且没有问题。但为什么我必须有一个任务?为什么我不能匿名写 当然,你可以匿名写: h = function(){ x = function(){ alert("try"); }(); x; }; 事实上,您的示例不起作用,因为您忘记在最后一行调用它: (function(){ (function(){ alert("try"); })(); }) (); 我添加了一个var,并
h = function(){
x = function(){
alert("try");
}();
x;
};
事实上,您的示例不起作用,因为您忘记在最后一行调用它:
(function(){
(function(){
alert("try");
})();
}) ();
我添加了一个var,并将内部执行向下移动了一行
} ();
然后你可以调用h
h = function(){
var x = function(){
alert("try");
};
x();
};
或者您可以直接使用
h();
或者,您可以使用
h = function(){
var x = function(){
alert("try");
};
x();
}();
希望这有帮助最后一行是为了调试目的,我发现变量未定义。为什么我必须给变量分配一个立即执行的函数?如果我没有,我有一个语法错误,但是变量仍然没有定义。你在这里到底想做什么?没什么,我只是在读“javascript-好的部分”,我正在做一些测试。但是为什么要两个否决票呢?一言不发?这太愚蠢了。谢谢你,Naeramath7,我省略了调用行,在onload上我有h();但你的例子非常详尽,谢谢。我对示例中需要的x变量感到惊讶,但它仍然没有定义。。
h = function(){
var x = function(){
alert("try");
};
return {
x:x
};
};
h().x();