为什么 JavaScript 会提升变量?JS的创建者Brendan Eich曾经说过(在Twitter上):
2022-08-30 04:33:03
为什么 JavaScript 会提升变量?
当设计师决定实施起重时,他们的理由是什么?还有其他流行的语言可以做到这一点吗?
请提供文件和(或)记录的相关链接。
为什么 JavaScript 会提升变量?
当设计师决定实施起重时,他们的理由是什么?还有其他流行的语言可以做到这一点吗?
请提供文件和(或)记录的相关链接。
正如 Stoyan Stefanov 在“JavaScript Patterns”一书中所解释的那样,提升是 JavaScript 解释器实现的结果。
JS 代码解释分两次执行。在第一次传递期间,解释器处理变量和函数声明。
第二遍是实际的代码执行步骤。解释器处理函数表达式和未声明的变量。
因此,我们可以使用“吊装”概念来描述这种行为。
“因此,var吊装是功能提升的意外结果,没有阻塞范围,[和]JS作为1995年的紧急工作。
“功能提升允许自上而下程序分解,'让rec'免费,在声明前打电话;var 吊装标记了。
我不知道有任何其他流行的语言以同样的方式提升变量。我认为即使是 ActionScript(Flash 开发中使用的 ECMAScript 的另一种实现)也没有实现提升。对于熟悉其他语言并正在学习JavaScript的开发人员来说,这一直是困惑和沮丧的根源。