我正在尝试理解回调概念。
当我这样做时:
var myCallback = function(data) {
console.log( 'got data: '+data);
};
var usingItNow = function(callback) {
callback('get it?');
};
usingItNow(myCallback);
我将其视为预期的输出:
获得数据:得到它?
但是当我执行以下操作时,我得到undefined
作为输出,为什么会这样?
var myCallback = function(data) {
return 'got data: '+data;
};
var usingItNow = function(callback) {
callback('get it?');
};
console.log(usingItNow(myCallback));
答案 0 :(得分:3)
您还需要从usingItNow
返回。
const myCallback = function(data) {
return 'got data: '+ data;
};
const usingItNow = function(callback) {
return callback('get it?');
};
console.log(usingItNow(myCallback));

答案 1 :(得分:0)
这与回调无关。您正在打印函数调用的结果,但usingItNow()
函数不会返回任何内容,因此结果为undefined
。
要证明它与回调无关,请尝试打印出一个不返回任何内容的标准函数的调用,你也会得到undefined
:
function usingItNow(num) {
num = num + num;
};
console.log(usingItNow(10));

现在,只需让函数返回一些东西,然后打印出来:
function usingItNow(num) {
return num + num;
};
console.log(usingItNow(10));

这导致了Suren在他的回答中提到的,返回回调的结果将其打印出来:
const myCallback = function(data) {
return 'got data: ' + data;
};
const usingItNow = function(callback) {
return callback('get it?');
};
console.log(usingItNow(myCallback));