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

时间:2017-05-24 10:07:37

标签: 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);

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

最终输出为undefined,我期待120

2 个答案:

答案 0 :(得分:5)

预期结果,因为您没有从mainFunc函数()返回值。

使用

return executorFunc(innerFunc);

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

答案 1 :(得分:0)

这里的问题是 public class WillNotInitiliase { public WillNotInitiliase() { BreakType(); } static WillNotInitiliase() { BreakType(); } public static void DoStuff() { } private static void BreakType() => throw new TypeLoadException( "I can never be loaded" ); } 没有返回任何值。所以mainFunc仍未定义。