ES6的块级作用域

Posted cheesecatmiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6的块级作用域相关的知识,希望对你有一定的参考价值。

let实际上为 javascript 新增了块级作用域。

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

上面的函数有两个代码块,都声明了变量n,运行后输出 5。这表示外层代码块不受内层代码块的影响。如果两次都使用var定义变量n,最后输出的值才是 10。

ES6 允许块级作用域的任意嵌套。

{{{{{let insane = ‘Hello World‘}}}}};

上面代码使用了一个五层的块级作用域。外层作用域无法读取内层作用域的变量

{{{{
  {let insane = ‘Hello World‘}
  console.log(insane); // 报错
}}}};

内层作用域可以定义外层作用域的同名变量。

{{{{
  let insane = ‘Hello World‘;
  {let insane = ‘Hello World‘}
}}}};

块级作用域的出现,实际上使得获得广泛应用的立即执行函数表达式(IIFE)不再必要了。

// IIFE 写法
(function () {
  var tmp = ...;
  ...
}());

// 块级作用域写法
{
  let tmp = ...;
  ...
}

以上是关于ES6的块级作用域的主要内容,如果未能解决你的问题,请参考以下文章

es6学习 -- let和const

ES6——块级作用域

let和ES6块级作用域

ES6基础之letconst

es6

ES6语法基础