javascript,奇怪的功能安排,不明白

时间:2013-10-07 21:01:35

标签: javascript

请参阅以下javascript。当函数以这种方式排列时,它们如何能够在没有被特定调用的情况下运行。我的意思是下面的函数在没有被调用的情况下运行,我不明白如何。

(j, function() {
alert(1);
})

它是这样评估的:

eval(s)(j, function() { catch (_) { } } 

1 个答案:

答案 0 :(得分:11)

看起来这些是函数调用的参数,即

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