es6数组初始化_你不了解的ES6——let/const(内含高能福利)

停更了很久,今天,我猿叨叨又回来啦!!!

4e2e3daf115b16fccda6e9eec4ea8814.png

你不了解的ES6

今天起,开始更新你不了解的ES6系列,主要是一些重要的基础知识点。大神请自觉忽略,但欢迎批评指正。菜鸟的话就一起交流提高吧。

ES6系列主要包括:

  1. let/const
  2. 解构赋值
  3. 模板字符串
  4. 函数扩展
  5. symbol
  6. set/map
  7. promise
  8. async
  9. class
  10. module

欢迎持续关注。

今天主要说let/const,其实只说let/const很简单,无非就是定义变量和常量。但是除此之外,我们还需要了解ES6作用域的变化以及变量存储的相关知识。

我们都知道,ES5有var用来定义变量,但定义的是全局变量(顶层),ES6新增let用来声明块级作用域内有效的变量,const用来声明常量。

let与var相同点

  • 都用于声明变量
  • 语法规则相似

let与var不同点

  • let声明的变量只在所在代码块(块级作用域)有效
  • var声明的变量在全局范围有效
  • var存在变量提升
  • let不存在变量提升

块级作用域是什么?变量提升又是什么?不要慌,下面一个一个说,先说变量提升。敲黑板,划重点了,要考的!!!变量提升在面试中很容易被问到。

变量提升:函数及变量的声明都将被提升到函数的最顶部。

简单来说,变量提升就是允许变量或函数先使用后声明,不会报错。

在ES5中,作用域只有全局作用域和函数作用域两种;ES6新增了块级作用域

全局作用域:声明的变量为全局变量,所有函数可访问函数作用域:声明的变量为局部变量,只有在函数内可访问块级作用域:通过花括号({})声明,定义局部变量,外层作用域不能访问内层作用域的变量

关于let和var就是以上内容。下面是const:

const用于声明只读常量。只读的意思就是一旦声明,它的值就不能再次改变。

它有以下几点需要特别注意:

  • const必须在声明时就初始化值
  • 只在声明所在的块级作用域有效(与let相同)
  • 不存在变量提升(与let相同)
  • 不可重复声明
  • 尽量避免用const声明对象

重点解释最后一条,避免用const声明对象。因为对象是引用类型的值,而const作为常量能保证的只是变量指向的内存地址所保存的值不能改变。

e1781986e75a6bc048fe912c003e4d43.png

JS变量存储

const只能保证栈存储中的内容不变,而对于对象和数组来说,实际的值存储在堆内存,栈中存储的只是指向堆的一个地址而已。这也就是为什么将一个对象用等号赋值给另一个对象时,两个对象的值会相互影响,新对象存的只是指向原对象的一个地址罢了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值