美文网首页
ES6学习-1.块级作用域绑定

ES6学习-1.块级作用域绑定

作者: Zip_Wang | 来源:发表于2018-01-23 16:22 被阅读14次

首先这个系列的文章只是一个笔记性质的,方便以后的翻看和查阅。内容来自于NICHOLAS.C.ZAKAS所写,刘振涛翻译的《深入理解ES6》,大家如果喜欢可以购买。


首先我们要搞明白为什么要有“块级作用域绑定”,那是因为原先我们使用var声明变量不管是在全局还是函数内部,最后都会被当做在当前作用域顶部声明的,这就是俗称的“提升”机制。例如下面的示例代码:

虽然value的初始化是在condition成立的条件下执行的,但是再其他作用域范围内也是可以访问的,js并不会报错,代码的输出如下:

这就是为什么要有“块级作用域”。

1、使用“let”声明

代码示例如下:

如果使用ES6的let声明变量,就没法再其它域内访问变量了。输如下:

2、使用“const”声明

const声明的是常量,声明的时候一定要初始化具体的值,一旦初始化了,就不能修改它的值。作用域的范围和let是一样的。

但有一点就是用const声明对象的时候,不能修改对象本身,但是可以修改对象属性的值。示例代码如下:

编译器报错了,person整个对象不能修改

3、循环中使用“let”和“const”

(1)以前循环使用var定义一个i,那么在循环外面也可以访问i这个变量。如果使用let定义,那么这个变量就不能访问了,代码示例如下:

这里外部也可以访问i 这里就不能访问i

(2)循环中的函数,直接来看代码

上面的代码结果是只会输出10次数字10,如果没用let来声明i,那么我们会用IIFE表达式来解决这个问题,如果用let声明i,那么结果就是输出数字0~9。

(3)我们也可以在循环中使用const,但是一旦是用const那么这个变量则不能修改,一旦修改就会报错,所以一般const只会用于for-in或者for-of。

4、全局块作用域绑定

一般我们使用var声明变量,那么这个变量就会绑定到window上面,所以我们很容易覆盖其他的变量。但是使用let则不会绑定到window上面。

相关文章

  • 《深入理解ES6》学习笔记(第三天)

    《深入理解ES6》学习笔记(第三天) 第一章 块级作用域绑定 第2节 块级声明块级声明用于声明在指定块的作用域之外...

  • ES6分享会总结

    学到的内容 ES6的块级作用域 1. 块级作用域的概念 2. ES6允许在块级作用域内声明函数 3. 函数在块级作...

  • js 作用域链 和 原型链

    作用域链 js拥有全局作用域(window)、函数作用域、块级作用域(es6)。块级作用域是es6开始才拥有的,因...

  • 前端(ES6)

    1.块级作用域的引入 在ES6之前,js只有全局作用域和函数作用域,ES6中let关键字为其引入了块级作用域。 l...

  • JS基础知识(2) -- 作用域和作用域链

    作用域 作用域就是变量与函数的可访问范围 全局作用域 函数作用域 ES6块级作用域 ES5没有块级作用域,ES6有...

  • js 作用域

    js 作用域主要有:全局作用域和局部作用域,es5之前没有块级作用域,es6有了块级作用域 何为块级作用域,块级作...

  • let 和 const

    一、JS中的块级作用域 ES6之前JS不支持块级作用域在ES6之前,JS是没有块级作用域这个概念的,只有全局作用域...

  • 你真的懂let和const吗?

    块级作用域 在ES6之前我们脑海里应该只存在全局作用域和函数级作用域,没有块级作用域。那么为什么要引入块级作用域呢...

  • ES6学习-1.块级作用域绑定

    首先这个系列的文章只是一个笔记性质的,方便以后的翻看和查阅。内容来自于NICHOLAS.C.ZAKAS所写,刘振涛...

  • 《深入理解ES6》学习笔记(第四天)

    《深入理解ES6》学习笔记(第四天)第一章 块级作用域绑定 第2节 块级声明 2.1 cont声明 使用const...

网友评论

      本文标题:ES6学习-1.块级作用域绑定

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