簡體   English   中英

將函數表達式與箭頭函數設置為回調函數一起使用

[英]using function expression with callback function instated of arrow function

當我使用箭頭函數作為回調函數時,我在下面的這段代碼工作得很好

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沒有定義。

在第二個片段中,您沒有傳遞函數,而是在調用函數,然后將結果作為參數傳遞。 你要

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

嘗試運行以下代碼

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

您正在調用action(x),但它期望有一個函數,而在您調用action(x)的地方沒有x的值,因此它引發了錯誤

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM