请参阅下面的 javascript。当函数以这种方式排列时,它们如何能够在不被专门调用的情况下运行。我的意思是下面的函数在没有被调用的情况下运行,我不明白如何。
(j, function() {
alert(1);
})
它是这样评估的:
eval(s)(j, function() { catch (_) { } }
请参阅下面的 javascript。当函数以这种方式排列时,它们如何能够在不被专门调用的情况下运行。我的意思是下面的函数在没有被调用的情况下运行,我不明白如何。
(j, function() {
alert(1);
})
它是这样评估的:
eval(s)(j, function() { catch (_) { } }
看起来这些是函数调用的参数,即
foo(j, function() {
alert(1);
})
这会将 的当前值j
作为第一个参数传递,并将其中列出的函数作为第二个参数传递。
也就是说,为了调用该函数(警报 1 的函数),foo
必须手动调用它。类似的东西
function foo(j, f){
f();
}
编辑
因此,根据您的问题编辑,看起来上面的内容更不正确,除了直接引用该函数,您是从 eval 语句中获取它。
像这样的东西:
function foo(j, f){
f();
}
var s = "foo";
var j = 0;
eval(s)(j, function() {
alert(1);
})
这是一个有效的FIDDLE