2012-03-27 58 views
3

在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]解决此问题,但被调用方折旧并且不适用于大多数新型浏览器。

有什么办法可以设置一个变量等于一个函数的参数没有使用外壳?

回答

3

可以使用bind方法来解决一些参数

var variable = SayMyName.bind(null, "bob"); 

但是,这在IE < = 8中不起作用,所以在这种情况下你将不得不使用类似的替换或polyfil。

+0

+1居然回答我的问题,而不是使用外壳。 – Holtorf 2012-03-27 13:21:55

4

你不能使用嵌套的匿名函数吗?

var variable = function(name) { 
    return function() { 
    alert('My name is ' + name); 
    }; 
}; 

调用它得到你想要的结果:

var test = variable('bob'); 
test(); // Alerts "My name is bob" 
0

您可以返回一个功能,如:

function SayMyName(x) { return function() { alert("My name is Bob.");}}; 

var x = SayMyName('bob'); 
x(); 
0
var name = (function sayMyName(name) { 
    return alert('My name is: ' + name); 
}); 
name('Mike');​​​​​ 
0
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; 
    } 
} 
相关问题