let const 声明变量和常量 区别于var
1. 作用域只限制于当前的代码块中
{
let first = 123;
var second = 321;
console.log(first);
console.log(second);
}
console.log(second);
/!*console.log(first);//报错: first is not defined*!/
2. 使用let声明的变量, 不存在变量提升
{
console.log(str1); //报错: str1 is not defined
let str1 = 11;
}
3. 一个变量名, 相同作用域下 , 不能重复声明变量
{
let str2 = '666';
let str2 = 'test'
console.log(str2); //Identifier 'str2' has already been declared 重复声明
}
4. 通过for循环表现 let 的父子作用域
var btns = document.querySelectorAll('button');
for(var i = 0; i < btns.length; i++) {
(function(i){
btns[i].onclick = function(){
console.log('click' + i + 'ge');
}
})(i);
}
let btns = document.querySelectorAll('button');
for(let i = 0;i < btns.length; i++){
btns[i].onclick = function(){
console.log('click' + i + 'ge');
}
}