我试图弄清楚当我将回调传递给函数中的未命名函数时发生了什么 - 由于某些奇怪的原因,我在函数调用之间得到“未定义”。
以下是代码段:
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
为什么我未定义?
答案 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