一:let用法三个特性
1)声明变量,没有变量提升(没有声明之前不能使用)
2)是一个块作用域
3)不能重复声明
<script>
//1. let申明变量,没有变量提升
//Uncaught ReferenceError: a is not defined
console.log(a)
//let a=10;
//2. 是一个块作用域
if (1===1){
let b=10;
}
//1.html:15 Uncaught ReferenceError: b is not defined
//console.log(b)
//3.不能重复声明
let a=10;
let a=20;
//Uncaught SyntaxError: Identifier 'a' has already been declared
console.log(a)
</script>
二:const用法
1)声明常量,一但被声明,不能修改
2)声明,没有变量提升(没有声明之前不能使用)
3)是一个块作用域
4)不能重复声明
5)onst声明常量是个对象,不能直接修改变量,但是可以修改常量里面属性
<script>
//1. const声明常量后,不能被修改,而且声明前完成初始化
const PI =3.14
console.log(PI)
//2 const常量使用前必须先声明
//Uncaught ReferenceError: a is not defined
//console.log(a)
//3. const块作用域
if (1===1){
const P2="1111";
}
//Uncaught SyntaxError: Unexpected identifier
//console.log(P2)
//4. const声明常量,不能重复声明
const P3="1111";
//const P3="1111";
//Uncaught SyntaxError: Identifier 'P3' has already been declared
console.log(P3)
//5 const声明常量是个对象,不能直接修改变量,但是可以修改常量里面属性
const person ={
name:"1111"
}
person.name=222
//{name: 222}
console.log(person)
//Uncaught SyntaxError: Identifier 'person' has already been declared
const person ={
age:"3333"
}
</script>
三:使用场景
//1.使用场景:for 循环例子
var arr = []
for (var i =0;i<10;i++){
arr[i] =function(){
return i;
}
}
console.log(arr[5]());
//结果10 var有提升变量作用,最后i变成10了
var arr = [];
var i;
for (i =0;i<10;i++){
arr[i] =function(){
return i;
}
}
console.log(arr[5]());
var arr = [];
for (let i =0;i<10;i++){
arr[i] =function(){
return i;
}
}
////结果5
console.log(arr[5]());
//作用2:不全污染全局变量
let RegExp =10;
console.log(RegExp);
console.log(window.RegExp);