let 相当于之前的var
const 常量,定义好了不能改变
let注意:
1、没有预解析,不存在变量提升
在代码块内,只要let定义变量,在之前使用,都是报错(先定义再使用)
2、同一个块级作用域不能去重复定义变量,但可以赋值
<script>
{//第一个块级作用域
let i = 12;
{//第二个块级作用域
let i = 5;
console.log(i);
}
console.log(i);
}
</script>
3、for循环,for循环里面是父级作用域,在里面的是块级作用域
for(let i = 0;i<10;i++){//父级作用域
let i= 'abc';//子集作用域
console.log(i);
}
块级作用域:{
//块级作用域
}
if(){}
for(){}
while(){}
<script >
var arr = [];
for (let i = 0; i < 10; i++) {
//TODO
arr[i] = function(){
console.log(i);
}
}
arr[3]();
</script>
用于选项卡处理
<input type="button" name="" id="" value="11" />
<input type="button" name="" id="" value="22" />
<input type="button" name="" id="" value="33" />
<script >
window.onload = function(){
var aInput = document.querySelectorAll('input');
for(let i = 0; i<aInput.length;i++){
aInput[i].onclick = function(){
alert(i);
}
}
}
</script>
const 常量,定义时必须有值,不能后赋值,不能修改;如果是数组,对象的方法还是可以用
object.freeze(对象);
const arr = Object.freeze(['1','2']) 无法改变