美文网首页
深入理解ES6:1.块级作用域绑定

深入理解ES6:1.块级作用域绑定

作者: 独木舟的木 | 来源:发表于2019-10-10 15:09 被阅读0次

Tags:letconst

块级声明:声明在指定块的作用域之外无法访问的变量。

块级作用域存在于:

  • 函数内部;
  • 块中(字符{}之间的区域)。

let 声明

  1. 块级声明:用 let 声明的变量可以把该变量的作用域限制在当前代码块中。
  2. 没有变量提升机制let 声明不会被提升(Hoisting)。
  3. 禁止重声明:同一个作用域中不能用 let 重复定义已经存在的标识符。

const 声明

  1. 使用 const 声明的是常量,其值一旦被设定后不可更改。因此,每个通过 const 声明的常量必须进行初始化
  2. const 声明不会被提升。
  3. 同一个作用域中不能用 const 重复定义已经存在的标识符。
  4. const 声明不允许修改绑定,但允许修改绑定的值。也就是说,不可以为 const 定义的常量再赋值,但是如果 const 声明的常量是对象,可以修改该对象的属性值。

循环

for-infor-of 循环中,letconst 都会每次迭代时创建新绑定,从而使循环体内创建的函数可以访问到相应迭代的值。

⚠️ 在 for 循环中使用 const 声明变量可能会引发错误,除非后续循环中不会修改该变量的值。

全局作用域绑定

如果在全局作用域中使用 letconst,会在全局作用域下创建一个新的绑定,但该绑定不会添加为全局对象的属性。换句话说,用 letconst 不能覆盖全局变量,而只能遮蔽它。

// 在浏览器中
let RegExp = "Hello!";
console.log(RegExp); // "Hello!" ,<-- 创建了一个全局变量
console.log(window.RegExp === RegExp); // false <-- 但这个全局变量并不是全局对象 window 的属性

const ncz = "Hi";
console.log(ncz); // "Hi"
console.log("ncz" in window); // false

块级绑定的最佳实践

默认使用 const,只有确实需要改变变量的值时使用 let

相关文章

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

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

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

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

  • ES6分享会总结

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

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

    《深入理解ES6》学习笔记(第二天) 第一章 块级作用域绑定【前言】过去,JavaScript的变量声明机制一直令...

  • 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.块级作用域绑定

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