let 为 JS 新增了块级作用域, 见代码:
ES6 容许块级作用域容许任意嵌套, 见代码:
外层作用域无奈读取内层作用域的变量, 见代码:
内层作用域能够定义外层作用域的同名变量,: 见代码:
块级作用域的呈现使得立刻执行匿名函数 (IIFE) 不在必要, 见代码:
块级作用域与函数申明
ES6 的规定
- 容许在块级作用域内申明函数
- 函数申明相似于 var, 即会晋升到全局作用域或函数作用域的头部
- 同时, 函数申明还会晋升所在块级作用域的头部
- 块级作用域申明函数的规定只在应用大括号的状况下成立, 若没有大括号就会报错, 见代码:
因为环境导致的行为差别过大应防止在块级作用域中申明函数, 若的确须要能够采纳函数表达式的模式, 见代码:
do 表达式
实质上, 块级作用域是一个语句, 将多个语句封装在一起, 没有返回值, 在作用域外不能拜访外面的值, 因为作用域不返回值, 对于这种状况能够应用 do 关键字, 使它变成 do 表达式, 见代码: