Xla*_*ius 77 javascript hoisting
为什么JavaScript提升变量?
设计师决定实施吊装时的理由是什么?还有其他流行语言吗?
请提供文档和/或记录的相关链接.
小智 52
正如Stoyan Stefanov在"JavaScript Patterns"一书中解释的那样,提升是JavaScript解释器实现的结果.
JS代码解释分两次执行.在第一次传递期间,解释器处理变量和函数声明.
第二遍实际上是代码执行步骤.解释器处理函数表达式和未声明的变量.
因此,我们可以使用"提升"概念来描述这种行为.
希望这可以帮助.
gfu*_*lam 25
“因此,var 提升是函数提升的 [一个] 意外结果,没有块作用域,[和] JS 作为 1995 年的紧急工作。”
“函数提升允许自上而下的程序分解,'let rec' 免费,在声明之前调用;var 提升标记在一起。”
我不知道有任何其他流行的语言以相同的方式提升变量。我认为即使是 ActionScript——另一个用于 Flash 开发的 ECMAScript 实现——也没有实现提升。对于熟悉其他语言并正在学习 JavaScript 的开发人员来说,这一直是一个困惑和沮丧的根源。