如果在已初始化的变量上使用`var`,会发生什么?

时间:2013-12-25 23:34:55

标签: javascript

如果您尝试多次初始化变量,我只是想知道(内部)究竟发生了什么。

例如:

var x = -5;

if(x < 0) {
    var x = 5;
}

我理解最终结果将是x = 5,但是这会导致浏览器销毁变量并重新启动吗?

2 个答案:

答案 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没有“其他”条款。变量已经声明时没有任何反应。