2012-03-27 59 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; 
    } 
} 
相關問題