当我使用箭头函数作为回调函数
时,我在下面的代码工作得很好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没有定义。
答案 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