尝试使用内部函数时获取未定义的值

Bei*_*man 0 javascript jquery ecmascript-6

以下是我的代码段:

function executorFunc(input){
    return input();
}

function mainFunc(){
    var a = 100;

    function innerFunc(){
        var b = 20;
        return a + b;
    }

    executorFunc(innerFunc);
}

var finalVal = mainFunc();

console.log(finalVal);
Run Code Online (Sandbox Code Playgroud)

我假设innerFunc在内部创建mainFunc并且将会知道外部/封闭函数数据a = 100.令我惊讶的是,事实并非如此.有些东西做错了,或者有些东西我在JS的基础知识中误解了.

最终的输出是undefined我期待的120.

Sat*_*pal 5

因为您没有从mainFuncfunction()返回值,所以预期的结果.

使用

return executorFunc(innerFunc);
Run Code Online (Sandbox Code Playgroud)

function executorFunc(input){
    return input();
}

function mainFunc(){
    var a = 100;

    function innerFunc(){
        var b = 20;
        return a + b;
    }

    return executorFunc(innerFunc);
}

var finalVal = mainFunc();

console.log(finalVal);
Run Code Online (Sandbox Code Playgroud)