LLwanran / front_end_studying

前端知识要点
https://llwanran.github.io/front_end_studying/
2 stars 1 forks source link

var、let、const 的区别(北京百分点1面 & 蘑菇街1面) #18

Open LLwanran opened 5 years ago

LLwanran commented 5 years ago

一:var声明的变量会挂载在window上,而let和const声明的变量不会 二: var声明变量存在变量提升,let和const不存在变量提升 三:let和const声明形成块作用域 四: 同一作用域下let和const不能声明同名变量,而var可以 五:let有暂时性死区

var a = 100;
if (1) {
    a = 10;
    // 在当前块作用域中存在a使用let/const声明的情况下,给a赋值10时,只会在当前作用域找变量a,
    // 而这时,还未到声明时候,所以控制台Error:a is not defined
    let a = 1;
}

六: const 在声明时必须初始化赋值,一旦声明,其声明的值就不允许改变,更不允许重复声明

如 const 声明了一个复合类型的常量,其存储的是一个引用地址,不允许改变的是这个地址,而对象本身是可变的