• 售前

  • 售后

热门帖子
入门百科

javascript的var与let,const之间的区别详解

[复制链接]
我爱萨其马虞co 显示全部楼层 发表于 2022-1-8 04:24:50 |阅读模式 打印 上一主题 下一主题
目次


  • 作为全局变量时
  • 变量提拔
  • 临时性死区
  • 块级作用域
  • 重复声明
  • 修改声明的变量(常量与变量声明)
  • 总结
说到
  1. JavaScript
复制代码
中声明变量的几种方法也就是
  1. var
复制代码
  1. let
复制代码
  1. const
复制代码
了,
  1. let
复制代码
  1. const
复制代码
  1. es6
复制代码
中新增的下令。那么它们之间有什么区别呢?
我们先整体说一下三者的区别,在具体先容,var、let、const的区别重要从以下几点分析:

  • 作为全局变量时的不同
  • 变量提拔
  • 临时性死区
  • 块级作用域
  • 重复声明
  • 修改声明的变量

作为全局变量时

  1. ES5
复制代码
中,顶层对象的属性和全局变量是等价的,用
  1. var
复制代码
声明的变量既是全局变量,也是顶层变量的属性
但是
  1. ES6
复制代码
中用
  1. let
复制代码
声明的变量可以在全局访问到,但是并没有在顶层变量的属性上,
  1. const
复制代码
声明的常量同样也不会在顶层变量上


变量提拔
  1. var
复制代码
声明的变量存在变量提拔,及变量可以在声明之前调用,值为undefined
  1. let
复制代码
  1. const
复制代码
不存在变量提拔,即它们所声明的变量一定要在声明后使用,否则会报错
  1. console.log(a)  // undefined
  2. var a = 1
  3. console.log(b)  // Cannot access 'b' before initialization
  4. let b = 2
  5. console.log(c)  // Cannot access 'c' before initialization
  6. const c = 3console.log(a)  // undefined
  7. var a = 1
  8. console.log(b)  // Cannot access 'b' before initialization
  9. let b = 2
  10. console.log(c)  // Cannot access 'c' before initialization
  11. const c = 3
复制代码
临时性死区
  1. var
复制代码
不存在临时性死区
  1. let
复制代码
  1. const
复制代码
存在临时性死区,只有等到声明变量的那一行代码被实行后,才可以获取和使用该变量
其实这一点就是有上一点变量提拔延伸而来的区别。因为
  1. var
复制代码
声明的变量存在变量提拔,在声明之前使用该变量值为
  1. undefined
复制代码
,不会报错,全部没有临时性死区。
  1. let
复制代码
  1. const
复制代码
在该作用域开始前后,变量或常量声明之前使用会报错,这一块区域也就被称为临时性死区
例同上文:
  1. console.log(a)  // undefined
  2. var a = 1
  3. console.log(b)  // Cannot access 'b' before initialization
  4. let b = 2
  5. console.log(c)  // Cannot access 'c' before initialization
  6. const c = 3
复制代码
块级作用域
  1. var
复制代码
不存在块级作用域
  1. let
复制代码
  1. const
复制代码
存在块级作用域
  1. {    var a = 2}console.log(a)  // 2{    let b = 2}console.log(b)  // Uncaught ReferenceError: b is not defined{    const c = 2}console.log(c)  // Uncaught ReferenceError: c is not defined
复制代码
重复声明
  1. var
复制代码
在雷同作用域下答应重复声明,背面声明的变量会覆盖前面的变量声明
  1. let
复制代码
  1. const
复制代码
在雷同作用域下不答应重复声明
  1. var a = 10
  2. var a = 20 // 20
  3. let b = 10
  4. let b = 20 // Identifier 'b' has already been declared
  5. const c = 10
  6. const c = 20 // Identifier 'c' has already been declared
复制代码
修改声明的变量(常量与变量声明)
  1. var
复制代码
  1. let
复制代码
声明的是变量,声明后的变量可被修改
  1. const
复制代码
声明得失常量,只读。一旦声明,常量的值就不能改变。但是须要注意的是,对于引用数据类型,
  1. JavaScript
复制代码
中的变量大概常量存储的是该数据的存储地点,只要不直接修改该常量的引用,修改其指向的对象的属性是可以的。
  1. var a = 10
  2. a = 20
  3. console.log(a)  // 20
  4. let b = 10
  5. b = 20
  6. console.log(b)  // 20
  7. const c = 10
  8. c = 20 // Uncaught TypeError: Assignment to constant variable
复制代码
总结

本篇文章就到这里了,渴望可以大概给你带来资助,也渴望您可以大概多多关注脚本之家的更多内容!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作