2017-08-31 50 views
0

我有下面這段代碼工作得很好,當我用箭頭功能作爲一個回調函數與回調函數中使用函數表達式instated箭頭功能

var getNumber = function (argument, callback) { 
callback(argument - 1); 
} 
getNumber(10, (x)=>{ 
console.log(x); // x = 9 
}); 

現在,當我想改變箭頭的功能函數表達式下面的代碼。

var getNumber = function (argument, callback) { 
callback(argument - 1); 
} 
getNumber(10, action(x)); // x is not defined 
function action(x){ 
console.log(x); 
} 

可悲的是我得到錯誤說x未定義。

+5

因爲你不是passi一個函數表達式,即你調用一個名爲'action'的函數 –

回答

5

在你的第二個片段中,你沒有傳遞函數,你調用函數,然後將結果作爲參數傳遞。你想

getNumber(10, action); // x is not defined 
function action(x){ 
    console.log(x); 
} 
1

嘗試運行下面的代碼

var getNumber = function (argument, callback) { 
 
callback(argument - 1); 
 
} 
 
getNumber(10, action); // x is not defined 
 
function action(x){ 
 
console.log(x); 
 
}

你打電話的動作(X),而其預期的功能,有你在哪裏打電話沒有x的值動作(x)因此它提出了錯誤

1
var getNumber = function (argument, callback) { 
callback(argument - 1); 
} 

function action(x){ 
console.log(x); 
} 

getNumber(10, action); // pass callback function, not result of the call