将回调传递给函数中的未命名函数并获取“未定义”

时间:2016-08-21 08:07:29

标签: javascript callback

我试图弄清楚当我将回调传递给函数中的未命名函数时发生了什么 - 由于某些奇怪的原因,我在函数调用之间得到“未定义”。

以下是代码段:

var a = function (a) {
     console.log(a);
}

var b = function(callback) {
     console.log('one');
     console.log(callback('callback - one'));
     (function(second_layer_same_callback) {
          console.log('two');
          second_layer_same_callback('callback - two');})(callback);

}

b(a);

这是我得到的

one 
callback - one
undefined 
two 
callback - two

为什么我未定义

1 个答案:

答案 0 :(得分:2)

  

为什么我得到未定义?

你的问题就在这一行

console.log(callback('callback - one')); 

它会调用您的回调,a,然后记录'callback - one'它会传递此回调的返回值,即undefined,进入console.log

您可以将其视为两个步骤:

var result = callback('callback - one'); 
console.log(result); // this is undefined because a() doesn't return anything explicitly, which is then implicitly the undefined value