在全局范围内找不到返回函数

时间:2017-05-31 11:22:45

标签: javascript function return

var setup = function(){
    console.log("xyz");
    return function goBack(){
        console.log("It's actually abc");
    }
}

现在,在全局范围内调用setup()时,控制台中将显示“xyz”,但返回的函数(goBack)未附加到全局范围中。执行setup()后,我不能从全局范围访问goBack吗?

3 个答案:

答案 0 :(得分:2)

setup正在返回一个函数。

要访问它,请先致电var result = setup()。现在,goBack变量存储了result

现在,您可以使用result()goBack范围之外致电setup

答案 1 :(得分:0)

不,您从setup返回 - 名称goBack无关紧要。您需要在setup

的返回值上调用它
var foo = setup();
foo();// calls the function youve named `goBack`
// goBack() does not exist here.

答案 2 :(得分:0)

您可以像这样访问此功能goBack

var setup = function(){
console.log("xyz");
return function goBack(){
    console.log("It's actually abc");
}(); // IIFE here
}

setup(); // returns xyz , its actually abc

如您所见,我已将goBack变为IIFE并在全局范围内调用setup()。

您需要做的就是调用您返回的函数。