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