补充es6语法内容
let/var let是更完美的var(var有bug)
let 变量 需要改变
const 不可改变(更像标识符)
let有块级作用域 var没有
1.变量作用域:变量在什么范围内是可用的
{
var name='w';
console.log(name);
}
console.log(name);
//可用
2.没有块级作用域引起的问题 if的块级
var func;
if(true){
var name='w';
func=function(){
console.log(name);
}
//func()
}
name='bb'
func()
3.没有块级作用域引起的问题 for的块级
var btns=document.getElementsByTagName('button');
for (var i=0;i<btns.length;i++){
btns[i].addEventListener('click',function(){
console.log('第'+i+'个按钮被点击');
})
}
怎么解决的 利用闭包
//为什么闭包可以解决这个问题:函数是一个作用域
var btns=document.getElementsByTagName('button');
for (var i=0;i<btns.length;i++){
(function(i){
btns[i].addEventListener('click',function(){
console.log('第'+i+'个按钮被点击');
})
})(i)
}
es5中的var是没有块级作用域的(if/for)
es6中的let是有块级作用的(if/for)
const btns=document.getElementsByTagName('button');
for (let i=0;i<btns.length;i++){
(function(i){
btns[i].addEventListener('click',function(){
console.log('第'+i+'个按钮被点击');
})
})(i)
}