基本回调函数结果

时间:2018-04-13 09:36:23

标签: javascript callback

我正在尝试理解回调概念。

当我这样做时:

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));

2 个答案:

答案 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));