无法再通过名称访问函数声明:
(function log(){
console.log('print some information')
})
log()
代码抛出引用错误。我对此的理解是:函数 log
不存在于任何内部作用域中,为什么我不能按其名称调用它?
答案 0 :(得分:3)
为什么我不能直呼它的名字?
当你在 function
周围加上括号时,你会得到一个 function expression,而不是一个 function declaration,因为解析器希望在 {{1} 之间看到一个 expression }} 而不是声明。函数表达式名称只能在该函数的本地访问:
如果要在函数体内引用当前函数, 您需要创建一个命名函数表达式。 这个名字就是 仅局部于函数体(范围)
-MDN
这同样适用于其他运算符,例如 ()
和 !
,而不仅仅是 +
,这使您的函数被视为函数表达式。
如果你想创建一个函数声明,你可以去掉括号:
()