我寫這個,但不行我可以將此函數傳遞給Javascript中的另一個函數嗎?
可以javascript函數通自我其他功能
可我還訪問在調用函數的變量?
function caller()
{
var variable=123;
calledfunction(this);
}
function calledfunction(caller)
{
console.log(caller.variable);
}
caller();
我寫這個,但不行我可以將此函數傳遞給Javascript中的另一個函數嗎?
可以javascript函數通自我其他功能
可我還訪問在調用函數的變量?
function caller()
{
var variable=123;
calledfunction(this);
}
function calledfunction(caller)
{
console.log(caller.variable);
}
caller();
變化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();
或者,你可以把calledfunction
內caller
在這種情況下使用閉包:
function caller()
{
var variable=123;
calledfunction();
function calledfunction()
{
console.log(variable);
}
}
caller();
你應該澄清,在第一種情況下,你真的只是玩全局變量,這是通常不鼓勵('這個===窗口')。 – 2014-09-19 00:58:01
@FelixKling,好點。我添加了第三個例子,它創建一個空對象來保存數據,而不是使用'this'。 – 2014-09-19 01:16:51
錯在這裏有幾個關鍵的事情。它也看起來像你試圖實現回調,但實際上只需要一個簡單的回報。 – Marty 2014-09-18 23:52:26
什麼是「過濾器」,以及從哪裏調用'calledfunction'? – 2014-09-19 02:12:26
剛剛修改代碼 – 2014-09-19 10:22:43