我试图弄清楚当我将回调传递给函数内的一个未命名函数时发生了什么—出于某种奇怪的原因,我在函数调用之间遇到了“未定义”的情况。

这是一个代码片段:

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


为什么我不确定?

最佳答案

为什么我不确定?


你的问题是这条线

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

关于javascript - 将回调传递给函数中的未命名函数并获得“未定义”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39062156/

10-12 03:12
查看更多