Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在全局作用域中找不到返回函数_Javascript_Function_Return - Fatal编程技术网

Javascript 在全局作用域中找不到返回函数

Javascript 在全局作用域中找不到返回函数,javascript,function,return,Javascript,Function,Return,现在,在全局范围内调用setup()时,控制台中会显示“xyz”,但返回函数(goBack)不会追加到全局范围内。执行setup()后,我是否应该能够从全局作用域访问goBack?否,您是从setup返回的-名称goBack不相关。您需要在设置的返回值上调用它: var setup = function(){ console.log("xyz"); return function goBack(){ console.log("It's actually abc")

现在,在全局范围内调用setup()时,控制台中会显示“xyz”,但返回函数(goBack)不会追加到全局范围内。执行setup()后,我是否应该能够从全局作用域访问goBack?

否,您是从
setup
返回的-名称
goBack
不相关。您需要在
设置
的返回值上调用它:

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

setup
正在返回一个函数

要访问它,首先调用
var result=setup()
。现在,在
result
变量中存储了
goBack


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

您可以像这样访问此函数goBack

var foo = setup();
foo();// calls the function youve named `goBack`
// goBack() does not exist here.
正如您在这里看到的,我将goBack转换为一个iLife,并在全局范围内调用setup()


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

不,这不是javascript的工作方式…@OmriLuzon谢谢你的评论。永远感谢你的帮助。我所有的疑问都很清楚我明白你的意思。但是,当我只执行setup()而不将其存储在“result”变量中时会发生什么呢。这里我想了解的是:“goBack”去哪里了?在这种情况下,
goBack
仍然会被垃圾收集器返回并拾取,因为没有进行任何引用。如果不引用它,就无法调用它。您可以做的是调用
setup()()
。这将调用setup,当从第一个函数返回时,它们会立即调用
goBack
。这是一种即时调用的形式,这很有意义。我是JavaScript新手,还没有听说过垃圾收集器。我会查的。也不知道我可以像setup()那样调用setup。谢谢你的帮助!:)
var setup = function(){
console.log("xyz");
return function goBack(){
    console.log("It's actually abc");
}(); // IIFE here
}

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