猿问

for循环问题

for(var i=0;i<10;i++){};

console.log(i) //10

这段代码为什么循环体外面能访问到里面定义的i?

那如果像下面这样出现两个相同的循环又不会报错?按道理第二次var i=0;应该会报错的啊?


for(var i=0;i<10;i++){};

...

for(var i=0;i<10;i++){};

如果上面用let我还可以理解,求解为什么,用var 不会污染全局变量吗??


for(let i=0;i<10;i++){};

console.log(i) //undefined


四季花海
浏览 499回答 1
1回答

繁星coding

var&nbsp;可以重复定义。js 变量只有两个作用于:全局和函数。js 并没有块级作用域,所以即使写在 if/else/while/for 里面的,或者写在大括号里面的,都不是块级作用域(因为js 根本就没有块级作用域),所以你第一代代码的&nbsp;i&nbsp;是全局的。用&nbsp;var&nbsp;不会污染全局变量吗?确实会污染全局变量。但是变量可以重复使用&nbsp;var&nbsp;进行定义,所以不会报错。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答