1、let命令
<script>
//let关键字就是用来声明变量的
//使用let关键字声明的变量具有块级作用域
//在一个大括号中 使用let关键字声明的变量才具有块级作用域,var关键字不具备这个特点
/* if (true) {
let a = 10;
}
console.log(a);*/ //a is not defined
//防止循环变量变成全局变量
console.log('-------------防止循环变量变成全局变量-----------------');
for (var i = 0; i < 2; i++) {}
console.log(i);
/* for (let j=0;j<2;j++){}
console.log(j); */ //
console.log('-------------let声明不存在变量提升-------------');
//let声明的变量不存在变量提升
console.log(c);
var c = 10;
/* console.log(b);
let b=10; */
//使用let关键字声明的变量具有暂时性死区的特性
var temp = 100
if (true) {
console.log(temp);
let temp = 200;
}
</script>
2、const命令
<script>
//const用来声明一个常量的
//const声明必须赋初始值
/* if(true){
const a=10
}
console.log(a); */ //a is not defined
</script>
<script>
/* const b=10;
b=100;
console.log(b); */
let c = 10;
c = 100;
console.log(c);
const arr = [1, 2];
arr[0] = 100; //引用类型可以改变值或者添加属性
console.log(arr);
arr = [100, 200] //引用类型重新赋值会报错
console.log(arr);
</script>
3、let、const和var的区别
// demo5
var 关键字的特点:
- 变量(预解析)提升,可以在声明的前面使用
- 同一作用域内可以多次声明同一个变量(即便这种方式不建议这样去写)
- 能让它形成作用域的只有函数
let:声明变量的关键字
- 没有变量提升,只能在声明之后使用
- 同一作用域内只能声明一次
- 你声明的变量的作用域仅限于最近的花括号内( {} )
const:只能用来声明常量,该常量一旦声明其值就不能改变( 与let的唯一区别 )
- 没有变量提升,只能在声明之后使用
- 同一作用域内只能声明一次
- 你声明的变量的作用域仅限于最近的花括号内( {} )
- 用const声明的变量: 不允许重新赋值,引用数据类型可以添加或修改属性