美文网首页
ES6知识点总结之let、const

ES6知识点总结之let、const

作者: GU_0539 | 来源:发表于2019-04-17 18:22 被阅读0次

最近在看阮一峰老师的ECMAScript 6 入门这本书,随手做一下读书笔记
ECMAScript 6 入门 这是原文链接
感谢阮老师开源,不过我还是买了纸质版。


下面就是我的笔记

1、let

  let 声明变量用,块级作用域。let不存在变量提升,以前用var的时候,变量可以在声明前就可以使用(预执行阶段就为变量赋值为undefine,具体原因可以去看看js的执行机制),而用let声明变量,变量一定要在声明后才可以使用,不然就会报错。
以下为例子

// var 的情况
console.log(foo); // 输出undefined
var foo = 2;

// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;

暂时性死区

  直接上例子

var tmp = 123;

if (true) {
  tmp = 'abc'; // ReferenceError
  let tmp;
}

ES6 规定暂时性死区和let、const语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在 ES5 是很常见的,现在有了这种规定,避免此类错误就很容易了。
总之,暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。


不允许重复声明

  let不允许在相同作用域内,重复声明同一个变量。
  例子:

// 报错
function func() {
  let a = 10;
  var a = 1;
}

// 报错
function func() {
  let a = 10;
  let a = 1;
}

2、const

  const声明一个只读的常量。一旦声明,常量的值就不能改变。

const PI = 3.1415;
PI // 3.1415

PI = 3;
// TypeError: Assignment to constant variable.

  const声明后要立刻赋值,不立刻赋值会报错。

const foo;
// SyntaxError: Missing initializer in const declaration

const 同样存在暂时性死区


值引用类型数据定义

  对于引用类型的变量,const只是规定地址不能变,而里面的值是能够改变的

const foo = {};

// 为 foo 添加一个属性,可以成功
foo.prop = 123;
foo.prop // 123

// 将 foo 指向另一个对象,就会报错
foo = {}; // TypeError: "foo" is read-only

相关文章

  • ES6之 let 和 const 命令

    ES6 之 let 和 const 命令 1、let 命令 1.1、基本用法 ES6 新增了let命令,用来声明变...

  • ES6入门学习

    学到哪写到哪,就是不从let开始 ES6, 7知识点列表 let, const 对象与数组解构 Class继承的语...

  • (JS)

    ES6 let、const和var的区别 let和const声明变量不存在变量提升 let和const不能重复声明...

  • ES6知识点总结之let、const

    最近在看阮一峰老师的ECMAScript 6 入门这本书,随手做一下读书笔记ECMAScript 6 入门 这是原...

  • es6,es7,es8语法总结

    ES6 1. var let const let,const具有块级作用域,不具有变量提升 const 用...

  • ES 6 7 8 随笔 QAQ

    ES6 1. var let const let,const具有块级作用域,不具有变量提升 const 用...

  • ES6(let 与 const)

    ES6中引入了let 和 const来声明变量,我们来看下let 和 const 的使用 一、let let定义的...

  • react 入门基础(一)之ES6

    ####ES6 let const var 三者的区别 ### 1. let const 不能重复声明变...

  • es6总结一

    es6基础 let和const命令 let和const用于声明变量let跟var的区别 1、let定义过的变量不能...

  • es6解读1: let, const 和 smybol

    let const 作用域 作用域概念 如何使用let和const 使用let 形成块级作用域 es6下强制开启...

网友评论

      本文标题:ES6知识点总结之let、const

      本文链接:https://www.haomeiwen.com/subject/dntowqtx.html