- let/var
事实上var的设计可以看成是JavaScript语言设计上的错误,但是这种错误多半不能修护和移除,因为需要向后兼容,大概十年前,Brendan Eich就决定修复这个问题,于是它添加了一个新的关键字 let,我们可以将let看成更加完美的var
块级作用域{}
- js中使用var声明一个变量时,变量的作用域主要和函数的定义有关
- 针对其他块定义来说是没有作用域的,比如id/for,这在我们开发中往往会引发一些问题。
//3.没有作用域引起的问题:for的问题
var btns=document.getElementsByTagName('button');
for(var i=0;i<btns.length;i++){
btns[i].addEventListener('click',function()
{
console.log('第'+i+'个按钮被点击');
})
}
通过闭包来解决问题,for遍历生成了5个匿名函数
//3.没有作用域引起的问题:for的问题
//为什么闭包可以解决问题:函数是一个作用域
var btns=document.getElementsByTagName('button'