为什么JavaScript会提升变量?
设计师决定实施吊装时的基本原理是什么?还有其他流行的语言可以做到这一点吗?
请提供文档和/或记录的相关链接。
为什么JavaScript会提升变量?
设计师决定实施吊装时的基本原理是什么?还有其他流行的语言可以做到这一点吗?
请提供文档和/或记录的相关链接。
div
中的jQuery
Answers:
正如Stoyan Stefanov在“ JavaScript模式”一书中解释的那样,提升是JavaScript解释器实现的结果。
JS代码解释分两次进行。在第一遍中,解释器处理变量和函数声明。
第二遍是实际的代码执行步骤。解释器处理函数表达式和未声明的变量。
因此,我们可以使用“吊装”概念来描述这种行为。
“因此,无功吊装是功能吊装的意外结果,没有块作用域,并且是JS作为1995年的紧急工作。”
“函数提升允许自上而下的程序分解,在声明前调用'let rec'是免费的; var提升带有标签。
我不知道有其他流行语言以相同的方式提升变量。我认为,甚至ActionScript(Flash开发中使用的ECMAScript的另一种实现)也没有实现提升。对于熟悉其他正在学习JavaScript的语言的开发人员来说,这已成为混乱和沮丧的根源。
更新:根据评论,Python具有类似的变量提升行为。