var let const
let 和 const是es6新增语法
let和const 与 var不同的地方
-
var 定义的变量可以预先解析调用 结果是undefined 而let const不能预先解析 否则会报错
-
var 定义的变量可以重复赋值 const、let不能重复复置 否则报错
-
var变量作用域是全局/局部作用域 let、const定义的变量如果在{}中就只能在{}中调用
-
var所定义的变量会挂载到window上 let、const不会
-
var定义的变量存在变量提升的现象,即var 定义的变量可以预先解析调用 结果是undefined 而let const不能预先解析 否则会报错
-
let、const在块级作用域之内定义的话 在块级作用域之外无法访问 而var可以 即var变量作用域是全局/局部作用域 let、const定义的变量如果在{}中就只能在{}中调用
-
在一个作用域中,var可以声明同名的变量,后一个会覆盖前一个。let和const会直接报错。 即:var 定义的变量可以重复赋值 const、let不能重复复置 否则报错
-
const引用数据类型(对象)时,可以修改属性 此时并没有修改它的指向 我们只是对属性进行修改 它依旧指向原来的地址
const person={
name:"孙尚香",
age:18
}
person.name="公孙离";
console.log(person.name) //公孙离
const person={
name:"孙尚香",
age:18
}person={
name:"程咬金",
age:55
}; //直接报错