1. 作用域不同
let 局限于代码块; var 整个函数
if(true){
var str = 1
let str1 = 2
console.log(str)
console.log(str1)
}
console.log(str)
console.log(str1)// str1 is not defined
2. let声明的作用域不会被提升
console.log(str)
var str = 1
console.log(str1) // str1 is not defined
let str1 = 2
3. let同一作用域下不能定义相同的变量
var str = 1
var str = 11
console.log(str)//覆盖上一个定义的变量
let str1 = 2
let str1 = 22
console.log(str1)//'str1' has already been declared
4. 对于没有块级作用域的for 、if 使用var会产生问题
5. let与const
const修饰的标识符为常量,不可再次赋值
const a = 5
a = 10 // 错误, 不可以修改
const a // 错误,const修饰的标识符必须赋值
开发中优先使用const,可变的再使用let
常量的含义是指向的对象不能修改,但对象的属性可以修改。
总结
var属于js设计缺陷
开发中不变的常量使用const修饰, 可变的使用let修饰 ,不使用var
网友评论