// 使用 var 的时候重复声明变量是没问题的,只不过就是后面会把前面覆盖掉var num =100var num =200// 使用 let 重复声明变量的时候就会报错了let num =100let num =200// 这里就会报错了// 使用 const 重复声明变量的时候就会报错const num =100const num =200// 这里就会报错了
2 let和const声明的变量不会在预解析的时候解析(也就是没有变量提升)
// 因为预解析(变量提升)的原因,在前面是有这个变量的,只不过没有赋值
console.log(num)// undefinedvar num =100// 因为 let 不会进行预解析(变量提升),所以直接报错了
console.log(num)let num =100// 因为 const 不会进行预解析(变量提升),所以直接报错了
console.log(num)const num =100
3 let和const声明的变量会被所有代码块限制作用范围
// var 声明的变量只有函数能限制其作用域,其他的不能限制if(true){var num =100}
console.log(num)// 100// let 声明的变量,除了函数可以限制,所有的代码块都可以限制其作用域(if/while/for/...)if(true){let num =100
console.log(num)// 100}
console.log(num)// 报错// const 声明的变量,除了函数可以限制,所有的代码块都可以限制其作用域(if/while/for/...)if(true){const num =100
console.log(num)// 100}
console.log(num)// 报错
4 let和const的区别
4.1 let声明的变量的值可以改变,const声明的变量的值不可以改变
let num =100
num =200
console.log(num)// 200const num =100
num =200// 这里就会报错了,因为 const 声明的变量值不可以改变(我们也叫做常量)
4.2 let声明的时候可以不赋值,const声明的时候必须赋值
let num
num =100
console.log(num)// 100const num // 这里就会报错了,因为 const 声明的时候必须赋值