【阮一峰ES6入门教程学习笔记】letconst
学习来源:ES6入门教程
let&const
(1) 前情提要
- ES6新增了let命令声明变量、const声明一个只读的常量。
- let、const提出的主要原因:块级作用域。由于ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景,比如:
- 内层变量可能会覆盖外层变量。
- 用来计数的循环变量泄露为全局变量
(2) let与const的特性
- 为JS新增了块级作用域,IIFE也变得不在必要了。
注意:for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。
for (let i = 0; i < 3; i++) {
let i = ‘abc’;
console.log(i);
}
// abc
// abc
// abc
上面代码正确运行,输出了 3 次abc。这表明函数内部的变量i与循环变量i不在同一个作用域,有各自单独的作用域。
- 不存在变量提升,会出现暂时性死区。(var就有变量提升现象)
- 不可重复声明。(var就可以重复声明)
- 声明的全局变量或者全局常量,不再与顶层对象的属性挂钩。(var就与顶层对象的属性挂钩)
顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象。ES5 之中,顶层对象的属性与全局变量是等价的。
- const一旦声明变量,就必须立即初始化,不能留到以后赋值。
- const本质:const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。简单类型数据地址和值统一,主要在于复合类型像数组对象之类的变量,引用地址不变,但其中的属性或者元素是可以改变的。
(3) globalThis对象(ES2020)
- 前端中顶层对象在各种实现里面是不统一的,使用起来受到极大局限
–浏览器里面,顶层对象是window,但 Node 和 Web Worker 没有window。
–浏览器和 Web Worker 里面,self也指向顶层对象,但是 Node 没有self。
–Node 里面,顶层对象是global,但其他环境都不支持。 - ES2020 在语言标准的层面,引入globalThis作为顶层对象。也就是说,任何环境下,globalThis都是存在的,都可以从它拿到顶层对象,指向全局环境下的this。
【阮一峰ES6入门教程学习笔记】letconst相关推荐
- 阮一峰ES6入门读书笔记(十六):Moudle
阮一峰ES6入门读书笔记(十六):Moudle 在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种.前者用于服务器,后者用于浏览器.ES6 在语言标准的层面上 ...
- 阮一峰ES6入门读书笔记(七):运算符的拓展
阮一峰ES6入门读书笔记(七):运算符的拓展 1. 指数运算符 ES6新增了一个指数运算符(**). 2 ** 2 // 4 2 ** 3 // 8 这个运算符的一个特点是右结合,而不是常见的左结合. ...
- 51单片机入门教程学习笔记
基于江科大自化协B站教学视频<51单片机入门教程-2020版 程序全程纯手打 从零开始入门> 一.单片机介绍 单片机,英文Micro Controller Unit,简称MCU 内部集成了 ...
- 学习笔记“阮一峰 Redux 入门教程(一):基本用法”
目录 1.基本概念 Redux的诞生: Redux定义.作用: Store : State: Action: Action Creator: store.dispatch(): Reducer: st ...
- 微信小程序入门教程学习笔记
写在前面: 作为一个刚刚入坑微信小程序的小白,以下是我在学习中的笔记,因为我真的太健忘了... 文章中可能会有错误,但是我会不断的修正的. 谢谢浏览,如有错误烦请指正 (≧∀≦)ゞ 微信官方的小程序开 ...
- 廖雪峰git入门教程——学习笔记
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 Q1:什么是GIT? A1:分布 ...
- Android入门教程学习笔记
一.四大组件 Android四大组件分别为Activity.Service.Broadcast Receiver.Content Provider Activity:用于页面展示. 通常,一个Acti ...
- 阮一峰react入门笔记
1.造树.type=text/babel,逗号分离 2.jsx语法(遇到HTML标签(以 < 开头),就用HTML规则解析:遇到代码块(以 { 开头),就用JavaScript规则解析). 函 ...
- ES6 入门教程 9 数组的扩展 9.1 扩展运算符
ES6 入门教程 ECMAScript 6 入门 作者:阮一峰 本文仅用于学习记录,不存在任何商业用途,如侵删 文章目录 ES6 入门教程 9 数组的扩展 9.1 扩展运算符 9.1.1 含义 9.1 ...
- 阮一峰 react 系列教程
阮一峰 react 系列教程 阮一峰 react 系列教程 ES6 语法:教程 Babel:教程 React:教程,示例库 Webpack:教程 React 项目脚手架:代码库 Flex 布局:教程, ...
最新文章
- ZOJ1654-Place the Robots【最大匹配,图论】
- 【渝粤题库】国家开放大学2021春1009离散数学(本)题目
- python student类_9.Python类和对象
- 【Absible学习】Ansible普通用户sudo执行指令
- Docker和K8S对比
- lisp调用dcl单选框_AutoLISP单选按钮RADIO_BUTTON设计插入图块
- python显示中文乱码_解决python中文乱码的方法
- java计算机毕业设计企业员工考勤系统的设计与实现源代码+数据库+系统+lw文档
- 报错:Exception opening socket
- 连着恰饭,还能有1000w播放?B站商单案例拆解
- 深度学习基础:机器学习中的基函数与函数空间
- @Cacheable和@CacheEvict的学习使用
- springboot采用协同过滤算法的家政服务平台的设计与实现毕业设计源码260839
- c语言中compar的用法,compare的用法
- 信息与通信工程学科面试准备——通信原理
- 选取十二个“一”,写一篇8000字小说
- 深度优先搜索的例子以及分析
- win10能登微信 打不开网页
- 读李开复——《做最好的自己》有感
- 计算机专业竞聘词150,计算机专业组长竞聘优秀演讲稿
热门文章
- quartusII编译时出现Error (119013): Current license file does not support the EP4CE6F17C8 device
- WEB前端常用的设计模式总结
- 单片机上面的继电器工作原理及其作用
- strcmp()函数
- Github Actions 云编译 OpenWRT LEDE 固件
- 国二C语言用编译器做题,C语言编程实例100题——国二国三题库大全(必过).doc
- 专利进阶(一):软件专利工程师浅谈如何针对计算机软件类专利申请进行技术挖掘
- [转]电子书收集工具
- snmpwalk , snmpget
- Livereload介绍