1、作用域
(1)变量作用域:变量在什么范围内是可用的。
(2)没有块级作用域引起的问题:
if的块级:
<script>
{
if (true) {
var name = 'rocke';
}
fuc = function () {
console.log(name);
}
}
name='cobe'
fuc()
</script>
for的块级
<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
<script>
var btnss = document.getElementsByTagName('button');
for (var i=0;i<btnss.length;i++){
btnss[i].addEventListener('click',function () {
console.log('第' + i + '个按钮被点击');
})
}
</script>
![不管点击哪个按钮都是打印第五个按钮被打印](https://i-blog.csdnimg.cn/blog_migrate/c0c882e6376abb4b6ce7f17e7571d7ec.png)
因为在for循环执行之后,i最后被赋值为5。var没有作用域,导致之前每一次for循环内的i都重新赋值为5。
ES5之前,因为if和for都没有块级作用于的概念,所以在很多时候,,我们都必须借助于function的作用域,来解决应用外边变量的问题。
ES6中加入了let,let它是有if和for的作用域概念的