zxdfe / FE-Interview

Every step counts
34 stars 1 forks source link

第13题:var、let、const的区别? #13

Open zxdfe opened 2 years ago

naVuppe commented 2 years ago
  1. let和const 有块级作用域,var没有。
  2. let和const 声明的变量不允许重新声明,var可以。
  3. let和const 存在暂时性死区。
  4. var声明的变量会提升,let和const不会提升。
  5. 在浏览器中,var声明的变量会挂载到window上,let和const声明的不会。 const变量必须声明时赋值、变量值不允许修改。
shuke-zhang commented 2 years ago

暂时性死区:使用let和const声明的变量会产生块级作用域,如果在声明之前使用这些变量,就会报错,这就是暂时性死区。(自己理解)

zxdfe commented 2 years ago

暂时性死区:使用let和const声明的变量会产生块级作用域,如果在声明之前使用这些变量,就会报错,这就是暂时性死区。(自己理解)

理解得没问题哈,就是这样的

rupoly commented 2 years ago
  1. var 声明的变量会提升到当前作用域的最顶层
  2. let/const 声明的变量会产生块级作用域
  3. let/const 不允许重复声明
  4. let/const 声明的变量存在暂时性死区
  5. var在全局声明的变量会挂载到window下

const 声明的变量在栈中无法改变(基本数据不能改变值,引用类型不能改变地址) const 声明变量必须立刻赋值

WLNCJL commented 2 years ago
1. let / const 可以形成块级作用域,var不可以
2. let / const 没有变量提升,var有
3. let / const 不能重新声明,var能
4. let / const 声明的变量有暂时性死区(建议先声明后使用)
5. var声明的全局变量会挂载到window对象上

const声明的变量声明的时候必须赋值
const声明的变量不能重新赋值
z-forever-y commented 2 years ago
1. let/const 会产生块级作用域,var不会
2. let/const  不能重新声明,var可以
3. let/const  不能提升变量 ,  var能
4. let/const  会形成暂时性死区 ,不能再声明前使用
5. 在浏览器上, var声明的变量会挂载在window上成为其属性

const 在声明变量的时候必须进行赋值
const 声明的变量不能改变值
lemon-912 commented 2 years ago

1.let ,const 可以生成块级作用域 var 不可以
2.let ,const 不可以重复声明 var 可以
3.let ,const 不可以提升变量 var 可以
4.let ,const 声明的变量有暂时性死区(建议先声明后使用)
5.var 声明的全局变量会挂载到window上
const 声明过后必须马上赋值
const 声明的变量不能重新赋值
Qian-e commented 2 years ago
  1. 只有let / const 可以形成块级作用域
  2. let / const 不存在变量提升,var有
  3. let / const 不允许重复声明,var可以
  4. let / const 存在暂时性的死区(temproal dead zone)TDZ
  5. 浏览器中,var声明的变量在全局作用域中挂载到windo对象上

const关键字

1. const 一旦声明,不需马上赋值
2. const声明的变量不能改变值,(简单类型不能改变值引用类型不能改变地址)
Qian-e commented 2 years ago

const 一旦声明,必需马上赋

stevenhuanghr commented 2 years ago
1.只有let.const声明的变量会产生块级作用域
2.let,const声明后不会提升变量,但var会
3.let.const不能重复声明,但var可以
4.let,const存在暂时性死区,必须先声明再使用
5.浏览器中,var声明的变量会挂载在window对象上
6.const声明后必须马上赋值
7.const声明后的值不能改变
BlueSky-Engineer commented 2 years ago
  1. var存在变量提升、一个变量可以多次声明,后面的生命会覆盖掉前面的声明、在函数中使用var声明变量的视乎,该变量是局部的,如果在函数内不适用var,该变量是全局的
  2. let不存在变量提升,let声明变量前,该变量不能使用(这叫 暂时性死区),let命令所在的代码块内有效,在块级作用域中有效,let不允许在相同作用域中重复声明,注意事项相同作用域,不同作用域有重复声明不会报错
  3. const声明一个只读的变量,声明后,值就不能改变,const必须初始化,const并不是变量的值不能改动,而是变量指向的内存地址所保存的数据不得改动
dyxfe commented 2 years ago
1、let const 声明的变量不存在变量提升
2、let const 声明的变量不允许重复声明
3、let const 声明的变量有暂时性死区
4、let const 声明的变量会形成块级作用域
5、var声明的变量会挂载到window上

6、const声明的变量不允许重新赋值
7、const声明的变量必须声明立马赋值
DouDouCat commented 1 year ago
  1. let/const 可以形成块级作用域,var不可以
  2. let/const 不存在变量提升,var可以
  3. let/const 不能重复声明,var可以
  4. let/const 不能再声明前使用(暂时性死区 temporal dead zone),var可以
  5. const 声明的时候必须马上赋值
  6. 浏览器中var声明的变量会挂载到window对象下,let / const 不会
  7. const声明的变量不能改变值(简单类型值,引用类型不能改变地址)
CDwenhuohuo commented 1 year ago

1.用let const声明的变量可以产生闭包 2.用let const声明的变量不存在变量提交,用var存在 3.用let const声明的变量不允许重复声明 4.用let const声明的变量存在暂时性死区,必须先声明再使用 5.用var声明的变量会挂载在window下 6.用const声明变量必须初始化,不允许再次赋值,基本数据类型不能修改值,引用数据类型不能修改地址