学习来源: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相关推荐

  1. 阮一峰ES6入门读书笔记(十六):Moudle

    阮一峰ES6入门读书笔记(十六):Moudle 在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种.前者用于服务器,后者用于浏览器.ES6 在语言标准的层面上 ...

  2. 阮一峰ES6入门读书笔记(七):运算符的拓展

    阮一峰ES6入门读书笔记(七):运算符的拓展 1. 指数运算符 ES6新增了一个指数运算符(**). 2 ** 2 // 4 2 ** 3 // 8 这个运算符的一个特点是右结合,而不是常见的左结合. ...

  3. 51单片机入门教程学习笔记

    基于江科大自化协B站教学视频<51单片机入门教程-2020版 程序全程纯手打 从零开始入门> 一.单片机介绍 单片机,英文Micro Controller Unit,简称MCU 内部集成了 ...

  4. 学习笔记“阮一峰 Redux 入门教程(一):基本用法”

    目录 1.基本概念 Redux的诞生: Redux定义.作用: Store : State: Action: Action Creator: store.dispatch(): Reducer: st ...

  5. 微信小程序入门教程学习笔记

    写在前面: 作为一个刚刚入坑微信小程序的小白,以下是我在学习中的笔记,因为我真的太健忘了... 文章中可能会有错误,但是我会不断的修正的. 谢谢浏览,如有错误烦请指正 (≧∀≦)ゞ 微信官方的小程序开 ...

  6. 廖雪峰git入门教程——学习笔记

    https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 Q1:什么是GIT? A1:分布 ...

  7. Android入门教程学习笔记

    一.四大组件 Android四大组件分别为Activity.Service.Broadcast Receiver.Content Provider Activity:用于页面展示. 通常,一个Acti ...

  8. 阮一峰react入门笔记

    1.造树.type=text/babel,逗号分离  2.jsx语法(遇到HTML标签(以 < 开头),就用HTML规则解析:遇到代码块(以 { 开头),就用JavaScript规则解析). 函 ...

  9. ES6 入门教程 9 数组的扩展 9.1 扩展运算符

    ES6 入门教程 ECMAScript 6 入门 作者:阮一峰 本文仅用于学习记录,不存在任何商业用途,如侵删 文章目录 ES6 入门教程 9 数组的扩展 9.1 扩展运算符 9.1.1 含义 9.1 ...

  10. 阮一峰 react 系列教程

    阮一峰 react 系列教程 阮一峰 react 系列教程 ES6 语法:教程 Babel:教程 React:教程,示例库 Webpack:教程 React 项目脚手架:代码库 Flex 布局:教程, ...

最新文章

  1. ZOJ1654-Place the Robots【最大匹配,图论】
  2. 【渝粤题库】国家开放大学2021春1009离散数学(本)题目
  3. python student类_9.Python类和对象
  4. 【Absible学习】Ansible普通用户sudo执行指令
  5. Docker和K8S对比
  6. lisp调用dcl单选框_AutoLISP单选按钮RADIO_BUTTON设计插入图块
  7. python显示中文乱码_解决python中文乱码的方法
  8. java计算机毕业设计企业员工考勤系统的设计与实现源代码+数据库+系统+lw文档
  9. 报错:Exception opening socket
  10. 连着恰饭,还能有1000w播放?B站商单案例拆解
  11. 深度学习基础:机器学习中的基函数与函数空间
  12. @Cacheable和@CacheEvict的学习使用
  13. springboot采用协同过滤算法的家政服务平台的设计与实现毕业设计源码260839
  14. c语言中compar的用法,compare的用法
  15. 信息与通信工程学科面试准备——通信原理
  16. 选取十二个“一”,写一篇8000字小说
  17. 深度优先搜索的例子以及分析
  18. win10能登微信 打不开网页
  19. 读李开复——《做最好的自己》有感
  20. 计算机专业竞聘词150,计算机专业组长竞聘优秀演讲稿

热门文章

  1. quartusII编译时出现Error (119013): Current license file does not support the EP4CE6F17C8 device
  2. WEB前端常用的设计模式总结
  3. 单片机上面的继电器工作原理及其作用
  4. strcmp()函数
  5. Github Actions 云编译 OpenWRT LEDE 固件
  6. 国二C语言用编译器做题,C语言编程实例100题——国二国三题库大全(必过).doc
  7. 专利进阶(一):软件专利工程师浅谈如何针对计算机软件类专利申请进行技术挖掘
  8. [转]电子书收集工具
  9. snmpwalk , snmpget
  10. Livereload介绍