为什么我可以将一个语句而不是一个函数传递给这个JS?

ber*_*436 0 javascript

我知道你可以在JS中使用函数作为参数.

当我将语句alert("d")作为参数传递时 - 一切都会触发.

 dc.embed.load('http://www.documentcloud.org/search/embed/', {some json
    }, alert("d"));
Run Code Online (Sandbox Code Playgroud)

但是,当我通过一个完整的功能 - 声明只是不起作用.

 dc.embed.load('http://www.documentcloud.org/search/embed/', {some json
    }, function() {
    alert("d");
});
Run Code Online (Sandbox Code Playgroud)

为什么可能警告火 - 但匿名功能不起火?

Sco*_*yet 5

在第一种情况下,您正在调用alert("d")并传递该结果undefined,作为函数的第三个参数.因此,警报会在您的load函数被调用之前运行.在第二种情况下,第三个参数是一个实际函数,如果它被调用将执行警报.它看起来好像从未被调用过.您需要调查dc.embed.load函数的行为,并查看它如何以及何时调用您传递的函数作为其第三个参数.