2013-03-27 100 views
1

請考慮此javascript:傳遞函數不計算

var a = function(arg1) { 
    alert(arg1); 
} 

a("hello"); 

a(function() { return "world"; }); 

我如何得到它在第二次調用返回的「世界」?現在它將整個函數作爲一個字符串返回。

回答

2

只需執行函數表達式,它會返回world和將要傳遞給a功能

a((function() { return "world"; })()); 

DEMO

+0

而其他的答案是正確的,這一個打釘撞在牆上。 – Boaz 2013-03-27 21:05:20

1

您需要調用的函數,不僅僅是指它:

alert(arg1()); 

如果您需要a應對被稱爲有一個字符串或一個功能,你需要檢查的類型與typeof的爭論,並以不同的方式處理它們。

1

隨着第二呼叫arg1是一個函數。

爲了讓您有執行功能結果:

alert(arg1());