停更了很久,今天,我猿叨叨又回来啦!!!
你不了解的ES6
今天起,开始更新你不了解的ES6系列,主要是一些重要的基础知识点。大神请自觉忽略,但欢迎批评指正。菜鸟的话就一起交流提高吧。
ES6系列主要包括:
- let/const
- 解构赋值
- 模板字符串
- 函数扩展
- symbol
- set/map
- promise
- async
- class
- 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作为常量能保证的只是变量指向的内存地址所保存的值不能改变。
JS变量存储
const只能保证栈存储中的内容不变,而对于对象和数组来说,实际的值存储在堆内存,栈中存储的只是指向堆的一个地址而已。这也就是为什么将一个对象用等号赋值给另一个对象时,两个对象的值会相互影响,新对象存的只是指向原对象的一个地址罢了。
今天的内容,你看懂了吗? 单选
0人
0%
看懂了,完全没毛病!
0人
0%
啥?你在说啥?我听不见!
投票
1.文章《const只读什么意思》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《const只读什么意思》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好