如果您尝试多次初始化变量,我只是想知道(内部)究竟发生了什么。
例如:
var x = -5;
if(x < 0) {
var x = 5;
}
我理解最终结果将是x = 5
,但是这会导致浏览器销毁变量并重新启动吗?
答案 0 :(得分:5)
没有
var
无论如何都会被提升,所以它在函数中的位置无关紧要。
答案 1 :(得分:4)
When a function is abeout to be executed, all variable and function declarations are evaluated.这是变量声明的步骤:
8。对于代码中的每个 VariableDeclaration 和 VariableDeclarationNoIn d ,在源文本顺序中执行
a。让 dn 成为 d 中的标识符。
b。让 varAlreadyDeclared 是调用 env 的HasBinding具体方法传递 dn 作为参数的结果。
c。如果 varAlreadyDeclared false ,则为 一世。调用 env 的CreateMutableBinding具体方法,将 dn 和 configurableBindings 作为参数传递。
II。调用 env 的 SetMutableBinding 具体方法,将 dn , undefined 和 strict 传递为争论。
就是这样,varAlreadyDeclared
true
没有“其他”条款。变量已经声明时没有任何反应。