Rod*_*igo 3 javascript variables
var i,j;
for (i=0; i<30; i++) {
for (j=0; j<10; j++) {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
与
for (var i=0; i<30; i++) {
for (var j=0; j<10; j++) {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
由于javascript的范围逻辑,第二种方式创建并销毁了j次30次?我更喜欢使用第一种方式,但我不知道是否存在差异.在那儿?
@thefourtheye和@Remigius Kijok的答案都是正确的.无论何时在函数内(或在全局范围内)声明和初始化变量,声明都会被提升到该范围的顶部.
您可以通过包装for函数中的任何一个循环然后在浏览器中执行该函数来自行查看.具体来说,通过在函数顶部设置断点,您将能够看到所有变量都已声明并使用undefined函数执行前的值进行初始化.
var loopy = function () {
for (var i = 0; i < 5; i += 1) {
for (var j = 0; j < 3; j += 1) {
console.log('i is ' + i + ' and j is ' + j);
}
}
};
loopy(); // place break point here
Run Code Online (Sandbox Code Playgroud)

正如你在照片中看到的那样,我正在使用Chrome的开发工具,并在执行时设置了一个断点loopy().在输入函数之后,但在执行任何for循环之前,变量i和j都被声明了undefined.