一、let介绍
<script>
//1.let声明的变量只在所处于的块级有效
// if (true) {
// let a = 10
// console.log("a=" + a);
// if (true) {
// let b = 20
// console.log("b=" + b);
// }
// console.log(b);
// }
// console.log(a); //a is not defined
// let c = 1
// console.log(c);
console.log('---------');
//2.防止循环变量变成全局变量
// for (let i = 0; i < 5; i++) {
// console.log(i);
// }
console.log('---------');
//3.不存在变量提升 必须要先声明再使用
// console.log(num);
// let num = 20
// console.log('---------');
//4.暂时性死区
var str = 20
if (true) { //使用let就表示块级里的str和外面的str无关
console.log(str);
let str = 'abc';
}
</script>
二、let面试题
<script>
// var arr = []
// for (var i = 0; i < 2; i++) {
// arr[i] = function() {
// console.log(i);
// }
// }
// arr[0]();
// arr[1]();
let arr = []
for (let i = 0; i < 2; i++) {
arr[i] = function() {
console.log(i);
}
}
arr[0]();
arr[1]();
</script>
三、const介绍
<script>
//1.具有块级作用域
// if (true) {
// const a = 20
// console.log(a);
// if (true) {
// const a = 10
// console.log(a);
// }
// }
// console.log(a); //not defined
//2.声明常量时必须赋值
// const num;
// console.log(num); //Missing initializer in const declaration
//3.常量赋值后 值(内存地址)不能修改
// const a = 10
// a = 20
// console.log(a); //Assignment to constant variable.
const arr = [100, 200]
arr[0] = 'a'
arr[1] = 'b'
console.log(arr);
arr = ['a', 'b']
console.log(arr); //Assignment to constant variable.
</script>
四、三者区别
<script>
//var、let、const区别
/*
1.使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象(先使用再赋值)
2.let,其作用域为该语句所在的代码块内,不存在变量提升
3.const,其作用域为该语句所在的代码块内,常量值(内存地址)不能被修改
*/
</script>
![image]()