简单了解var,let和const区别

一、let

  • **作用域名:**let声明的变量具有块级作用域,仅在声明它的代码块内有效。
  • **变量提升:**let声明的变量也会提升,但是不会被初始化。在代码执行到声明之前,他们是不可访问的,这个区间被称为“暂时性死区”。
  • **重复声明:**在同一个作用域中,let不允许重新声明已经存在的变量。
  • **重新赋值:**使用let声明的变量可以被重新赋值,但不能重复声明。

二、const

  • **作用域名:**与let相同,const声明的变量也具有块级作用域名。
  • 变量提升: const同样会提升到块的顶部,但是在声明之前它们也是不可访问的,存在“暂时性死区”。
  • 重复声明: const不允许在相同作用域内重复声明变量。
  • 重新赋值: const声明的变量不能被重新赋值,它们必须在声明时候初始化,并且声明后的值是固定的。但是,如果const变量只想的是一个对象或数组,那么对象或者数组的内容是可以被修改的。

三、var

  • 作用域名: var声明的变量拥有函数作用域,如果在函数外部声明,他将具有全局作用域。在全局作用域下使用var声明的变量会被附件到window对象上。
  • 变量提升: var声明的变量会发生变量提升(hoisting),意味着无论在函数的哪个部分声明,它们都会被移动到函数的顶部。
  • 重复声明: 使用var可以重复声明同一个变量。
  • 重新赋值: 使用var声明的变量可以被重新赋值。

四、区别

1、兼容性

  • let、const是ES6新增的声明变量的关键字,部分低版本的浏览器可能不支持
  • var的兼容性较好,吴兼容问题。

2、是否挂载全局/顶层对象上

  • 使用var声明的变量,默认是挂在顶层的全局对象上,即浏览器的window上。
  • let、const声明的变量挂载到当前的执行作用域下,不会挂载window上。
    注:window上挂载过多的对象,会过于臃肿,降低浏览器的性能。

五、名称解释

1、**变量提升:**是指在 JavaScript 代码执行前,变量和函数的声明会被移动到它们所在作用域的顶部。需要注意的是,只有声明本身会被提升,而赋值或其他运行逻辑则会留在原地。
‌‌2、**暂时性死区:**是指在‌JavaScript中,当使用‌或‌声明变量时,变量在其声明之前不能被访问或使用的特性。具体来说,当程序执行到包含let或const声明的代码块时,会创建一个称为暂时性死区的区域,该区域从声明开始直到块结束。在这个区域内,变量虽然已经被声明,但是在声明之前访问该变量会导致引擎抛出一个错误。‌

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值