美文网首页
ES6之let、const

ES6之let、const

作者: wade3po | 来源:发表于2019-02-11 08:54 被阅读19次

虽然用着ES6一些常用的简单语法,但是对于ES6一直没有一个完整的认识,不管是用得上还是用不上。于是决定重头好好学一遍ES6。

块级作用域:

Let和const声明的是块级作用域的变量,让变量的作用域更合理了,更是很简单的解决了for循环闭包的经典问题。

function f() { let n = 5; if (true) { let n = 10; console.log(n); //10 } console.log(n); //5}f()

外层代码块不受内层代码块的影响。

for (let i = 0; i < 3; i++) {

let i = 'abc';

console.log(i);

}

函数内部的变量i与循环变量i不在同一个作用域,有各自单独的作用域。

不存在变量提升:

Let和const声明的变量不像var一样存在变量提升,声明的只能在let声明之后使用。

console.log(a); //ReferenceError: a is not definedlet a = 2;console.log(b);var b = 0;//undefined

暂时性死区:

区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。简单说就是let是优先级。

var a = 123;if (true) { a = 1; //ReferenceError: a is not defined let a;}

不允许重复声明:

const声明一个只读的常量。一旦声明,常量的值就不能改变。这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值,否则报错。

const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。至于它指向的数据结构是不是可变的,就完全不能控制了。

const obj = {};obj.a = 0;

不会报错,想要具体了解内存地址,建议看一下之前堆栈的文章,

https://mp.weixin.qq.com/s/QD-0m-GixsHz2j6Q2egEqg

顶层对象:

顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象。ES5 之中,顶层对象的属性与全局变量是等价的。

window.a = 1;a = 2;window.a // 2

上面代码中,顶层对象的属性赋值与全局变量的赋值,是同一件事。

顶层对象的属性与全局变量挂钩,被认为是 JavaScript 语言最大的设计败笔之一。

let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩。

let b = 1;

window.b // undefined

欢迎关注Coding个人笔记 公众号

相关文章

  • ES6之 let 和 const 命令

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

  • (JS)

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

  • 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常用语法

    const 和 let 在es6语法规范中,尽量使用let替代var,如果在const 和let中选,优先使用co...

  • 总结一下前端常见javascript基础面试题:

    1.var ,let 和const的区别: let和const是es6新增的语法, let和var都可以定义变量,...

网友评论

      本文标题:ES6之let、const

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