在JavaScript中,您可以将变量设置为等于这样的方法:
variable = function () { alert("My name is bob"); };
Run Code Online (Sandbox Code Playgroud)
或者像这样:
function SayMyName() {
alert("My name is bob");
}
variable = SayMyName;
Run Code Online (Sandbox Code Playgroud)
你也可以用这样的参数包含一个函数:
function SayMyName(name) {
alert("My name is "+ name);
}
variable = function () { SayMyName("bob"); };
Run Code Online (Sandbox Code Playgroud)
但是尝试以下列方式存储变量将调用该函数,而不是将其存储为变量:
function SayMyName(name) {
alert("My name is "+ name);
}
variable = SayMyName("bob");
Run Code Online (Sandbox Code Playgroud)
以前有一种聪明的方法可以通过使用[callee] [1]来解决这个问题,但被调用者被折旧并且不适用于大多数现代浏览器.
有没有办法在不使用机箱的情况下将变量设置为带参数的函数?
你不能使用嵌套的匿名函数吗?
var variable = function(name) {
return function() {
alert('My name is ' + name);
};
};
Run Code Online (Sandbox Code Playgroud)
调用它会产生您想要的结果:
var test = variable('bob');
test(); // Alerts "My name is bob"
Run Code Online (Sandbox Code Playgroud)