2016-03-15 70 views
1

我已經定義了一個全局變量ff,然後調用f1爲其賦值函數f3。 當我打電話給f2時,f3會運行。javascript爲一個變量賦值而不運行它

var ff; 
function f1() { ff=f3; } 
function f2() { ff(); } 
function f3() { alert("hello"); } 

但如果F3拍攝參數如下

function f3(txt) { alert(txt); } 

,我叫F1分配FF如下

function f1() { ff=f3("hello"); } 

F3將在同一時間運行。

我不希望f3運行時,我將它分配給ff,我需要傳遞一個參數。 我該如何做到這一點? ()後面的變量好像會使它成爲函數並使其運行。

回答

4

嘗試使用bind

ff = f3.bind(null, "hello") 

bind()方法創建一個新的函數,調用它時,有其 此關鍵字設置爲所提供的價值,在調用新函數時提供任何提供的 參數的給定序列。

+0

感謝您的幫助!它的工作 – LING

1

在第二個示例中,您正在分配fff3調用的值,這就是它調用您的函數的原因。正如您最初所做的那樣,您應該完成作業ff=f3。然後,你可以調用FF與參數:ff("hello")

+0

我可以根據不同的條件,在f1中給f1分配不同數量的參數給f4。所以我不能用f2中的參數調用ff。 – LING

0

這是怎麼回事?

var ff; 
function f1() { ff=f3; } 
function f2() { ff('hello'); } 
function f3(text) { alert(text); } 
+0

你是什麼意思?關於https://jsfiddle.net/1qjxuhcr/ – Arsylum

+0

請關於您的解決方案,瞭解爲什麼以及如何解決問題 –