【发布时间】:2019-09-05 06:29:56
【问题描述】:
根据吊装定义:
提升是一种 JavaScript 机制,其中变量和函数 声明在代码执行之前被移动到其作用域的顶部
为什么函数声明会被提升而函数表达式不会?
【问题讨论】:
-
简单来说,命名变量是hiioisted。在函数表达式中,变量名被提升,但实际函数是稍后分配的值
-
函数表达式根本不会被添加到作用域中,无论是否被提升。这是因为它们被用作值,而不是函数声明,其目的是创建可以通过名称调用的函数。
-
因为“吊装”不存在。这只是一种理论,旨在简单解释 javascript 的工作原理,但它实际上并不是 javascript 的工作原理。有关正在发生的事情的解释,请参阅我对其他问题的回答:stackoverflow.com/questions/3887408/…
-
我想这个问题被否决了,因为它实际上并没有寻求帮助。 “为什么[语言 X] 是这样设计的?”对于 SO 来说,问题不是很好的问题,因为它们实际上并不寻求解决技术问题,而且可能非常难以回答,因为它需要了解语言设计者做出决定的原因。
-
@Priyank 如果您要询问实际的技术原因(例如规范方面)为什么它会以这种方式运行,那是另一回事。我建议澄清您的问题,以表明这就是您要问的问题。但是,我怀疑这个问题之前可能已经回答过了。
标签: javascript ecmascript-5 hoisting function-declaration function-expression