用于循环和吊装

Leg*_*tin 3 javascript

我有个问题.
例如,我使用这样的for循环:

for ( var i = 0; i < some_length; i++ ) {
    /* some code */
}
Run Code Online (Sandbox Code Playgroud)

在该变量i被提升之后.
这是否意味着我总是应该i在范围的开头声明变量?

var i;

for ( i = 0; i < some_length; i++ ) {
    /* some code */
}
Run Code Online (Sandbox Code Playgroud)

UPD:
我知道两个循环的工作方式相同.
我的意思是哪一个更正确?

Ром*_*еев 6

现代的JavaScript支持块作用域通过let.

for ( let i = 0; i < some_length; i++ ) {
    /* i is defined here */
}
/* i is not defined here * /
Run Code Online (Sandbox Code Playgroud)

回到原来的问题:哪个例子更正确?

我认为第二个不容易出错.