我以为一旦create Function运行,我将可以访问内部函数。

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

// Both of these return undefined
createFunction(printHello());
createFunction.printHello();

有什么想法吗?

最佳答案

正确的语法是:

createFunction()();


...或者更罗word:

const returnedFunction = createFunction();
returnedFunction();


...因为printHello名称仅在createFunction中有意义,但是其值实际上是由该函数返回的。是的,按顺序放置任意数量的()是完全可以的。

附带说明一下,返回console.log('hello')的结果没有什么意义:记录日志本身是一个副作用,无需检查其结果。

关于javascript - 为什么我不能使用点语法访问返回的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52104788/

10-10 22:53