使用带有回调函数的函数表达式,实现了箭头函数

时间:2017-08-31 13:04:28

标签: javascript binding callback

当我使用箭头函数作为回调函数

时,我在下面的代码工作得很好
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没有定义。

3 个答案:

答案 0 :(得分:5)

在你的第二个片段中,你没有传递函数,你正在调用函数,然后将结果作为参数传递。你想要

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

答案 1 :(得分:2)

尝试运行以下代码



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)的值,因此它引发了错误

答案 2 :(得分: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