2014-09-18 107 views
1

我寫這個,但不行我可以將此函數傳遞給Javascript中的另一個函數嗎?

可以javascript函數通自我其他功能

可我還訪問在調用函數的變量?

function caller() 
{ 
    var variable=123; 
    calledfunction(this); 
} 
function calledfunction(caller) 
{ 
    console.log(caller.variable); 
} 
caller(); 
+1

錯在這裏有幾個關鍵的事情。它也看起來像你試圖實現回調,但實際上只需要一個簡單的回報。 – Marty 2014-09-18 23:52:26

+0

什麼是「過濾器」,以及從哪裏調用'calledfunction'? – 2014-09-19 02:12:26

+0

剛剛修改代碼 – 2014-09-19 10:22:43

回答

0

變化var variable在分配this.variable

function caller() 
{ 
    this.variable=123; 
    calledfunction(this); 
} 
function calledfunction(caller) 
{ 
    console.log(caller.variable); 
} 
caller(); 

在這種情況下caller是不是真的產生一個新的實例/範圍,從而this實際上是全球這是壞的。最好創建一個新的空對象,並用它來保存數據,而不是使用this

function caller() 
{ 
    var data = {}; 
    data.variable=123; 
    calledfunction(data); 
} 
function calledfunction(values) 
{ 
    console.log(values.variable); 
} 
caller(); 

或者,你可以把calledfunctioncaller在這種情況下使用閉包:

function caller() 
{ 
    var variable=123; 
    calledfunction(); 

    function calledfunction() 
    { 
     console.log(variable); 
    } 
} 
caller(); 
+0

你應該澄清,在第一種情況下,你真的只是玩全局變量,這是通常不鼓勵('這個===窗口')。 – 2014-09-19 00:58:01

+0

@FelixKling,好點。我添加了第三個例子,它創建一個空對象來保存數據,而不是使用'this'。 – 2014-09-19 01:16:51

相關問題