【发布时间】:2021-05-16 12:37:25
【问题描述】:
函数声明不能再通过其名称访问:
(function log(){
console.log('print some information')
})
log()
代码抛出引用错误。我对此的理解是:函数log 不存在于任何内部范围内,为什么我不能直呼其名?
【问题讨论】:
-
当你封装一个这样的函数时,它会在它自己的执行范围内运行。意味着它将在被javascript引擎读取后运行该函数。
-
你为什么要把这个函数括在括号里?你希望达到什么目标?
-
@DeanVanGreunen 通常这就是函数实例化被括号括起来的原因,但在这种情况下,没有
()来调用函数(除了它不起作用的地方)。 -
@DeanVanGreunen 是的,谢谢,我知道。这不是这个问题所要尝试的;它是关于在
function关键字之后给出的名称是如何(嗯,在哪里)绑定的。 -
@DeanVanGreunen 括号不会自行创建范围,同样,因为没有 调用,它不是 IIFE(“立即调用函数表达式”)。问题是函数实例化表达式中的函数名称仅绑定为对inside创建函数的引用。
标签: javascript function scope