Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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_Closures - Fatal编程技术网

Javascript 为什么可以';使用点语法访问返回的函数

Javascript 为什么可以';使用点语法访问返回的函数,javascript,closures,Javascript,Closures,我认为一旦createFunction运行,我就可以访问内部函数了 function createFunction() { function printHello() { return console.log("hello"); } return printHello; } // Both of these return undefined createFunction(printHello()); createFunction.printHello(); 有什么想法吗?

我认为一旦createFunction运行,我就可以访问内部函数了

function createFunction() {
  function printHello() {
    return console.log("hello");
  }
  return printHello;
}

// Both of these return undefined
createFunction(printHello());
createFunction.printHello();
有什么想法吗?

正确的语法是:

createFunction()();
。。。或者,更详细一点:

const returnedFunction = createFunction();
returnedFunction();
。。。正如
printHello
name仅在
createFunction
中有意义,但它的值实际上是由该函数返回的。是的,按您想要的顺序放置任意数量的
()
是完全可以的

作为旁注,返回console.log('hello')的结果没有什么意义:日志记录本身是一种副作用,不需要检查其结果。

正确的语法是:

createFunction()();
。。。或者,更详细一点:

const returnedFunction = createFunction();
returnedFunction();
。。。正如
printHello
name仅在
createFunction
中有意义,但它的值实际上是由该函数返回的。是的,按您想要的顺序放置任意数量的
()
是完全可以的

作为旁注,返回
console.log('hello')
的结果没有什么意义:日志记录本身是一种副作用,不需要检查其结果

我认为一旦createFunction运行,我就可以访问内部函数了

function createFunction() {
  function printHello() {
    return console.log("hello");
  }
  return printHello;
}

// Both of these return undefined
createFunction(printHello());
createFunction.printHello();
不,您不能访问函数内部的变量。如果你调用一个函数,这些变量是存在的,但是你不能访问它们。但是,如果某个值得到
return
ed,则可以像处理该表达式一样处理函数调用。在您的情况下,您可以返回函数,以便通过以下方式访问它:

 var print = createFunction();
 print();
或者作为一个单行线:

 createFunction()();
我认为一旦createFunction运行,我就可以访问内部函数了

function createFunction() {
  function printHello() {
    return console.log("hello");
  }
  return printHello;
}

// Both of these return undefined
createFunction(printHello());
createFunction.printHello();
不,您不能访问函数内部的变量。如果你调用一个函数,这些变量是存在的,但是你不能访问它们。但是,如果某个值得到
return
ed,则可以像处理该表达式一样处理函数调用。在您的情况下,您可以返回函数,以便通过以下方式访问它:

 var print = createFunction();
 print();
或者作为一个单行线:

 createFunction()();

在代码中,createFunction返回另一个函数,所以要执行内部函数,必须在createFunction的返回值后追加()来调用内部函数,即createFunction();

createFunction()给出printHello=函数定义
createFunction()()与printHello**()相同**

此外,如果我们简化您的代码,我们可以重新编写为

函数printHello(){ console.log(“你好”); }; 函数createFunction(){ 返回printHello; }; log(“返回:createFunction()的值”); log(createFunction()); log(“返回值:createFunction()()-->printHello()”;
createFunction()在您的代码中,createFunction返回另一个函数,因此要执行内部函数,必须在createFunction的返回值后追加()来调用内部函数,即createFunction();

createFunction()给出printHello=函数定义
createFunction()()与printHello**()相同**

此外,如果我们简化您的代码,我们可以重新编写为

函数printHello(){ console.log(“你好”); }; 函数createFunction(){ 返回printHello; }; log(“返回:createFunction()的值”); log(createFunction()); log(“返回值:createFunction()()-->printHello()”;
createFunction()否,您永远无法访问函数中的局部变量。当然,您可以使用函数返回的值(恰好是
printHello
函数)执行操作,然后将该值分配给您自己的变量或调用它或其他任何操作。不,您永远无法访问函数中的局部变量。当然,您可以使用函数返回的值(恰好是
printHello
函数)执行操作,然后将该值赋给您自己的变量或调用它或其他任何函数。