在JavaScript中,您可以设置一个等于这样的方法的变量:
variable = function () { alert("My name is bob"); };
或者像这样:
function SayMyName() {
alert("My name is bob");
}
variable = SayMyName;
您还可以使用如下参数包含函数:
function SayMyName(name) {
alert("My name is "+ name);
}
variable = function () { SayMyName("bob"); };
但是尝试以下列方式存储变量将调用该函数,而不是将其存储为变量:
function SayMyName(name) {
alert("My name is "+ name);
}
variable = SayMyName("bob");
以前有一种聪明的方法可以通过使用[callee] [1]来解决这个问题,但被调用者被折旧并且无法在大多数现代浏览器上运行。
有没有办法设置一个变量等于带有参数而没有使用机箱的函数?
答案 0 :(得分:5)
你不能使用嵌套的匿名函数吗?
var variable = function(name) {
return function() {
alert('My name is ' + name);
};
};
调用它会产生您想要的结果:
var test = variable('bob');
test(); // Alerts "My name is bob"
答案 1 :(得分:4)
您可以使用bind
方法修复某些参数
var variable = SayMyName.bind(null, "bob");
但是,这在IE< = 8中不起作用,因此在这种情况下你必须使用类似的替换或polyfil。
答案 2 :(得分:0)
您可以返回一个功能,例如:
function SayMyName(x) { return function() { alert("My name is Bob.");}};
var x = SayMyName('bob');
x();
答案 3 :(得分:0)
var name = (function sayMyName(name) {
return alert('My name is: ' + name);
});
name('Mike');
答案 4 :(得分:-1)
public class ToyProgram{
public static void main(String[] args){
String funcCallVar = aFunc();
System.out.println(funcCallVar);
}
public static String aFunc(){
String aVariable = "yes you can set a variale equal to a function";
return aVariable;
}
}