1 概念
一个块级作用域也就是一对{}
,花括号在ES5和ES6中还是有些区别的
2 ES5
在ES5
中,花括号起到的作用是分类和分组的作用
例题1
if(false)
console.log('1')
console.log('2')
console.log('3')
输出
我们会发现离if
条件句最近的一句没有执行
例题2
if(false){
console.log('4')
console.log('5')
console.log('6')
}
一句都没有执行
if只管离他最近的一句或者一组(在花括号内,要么都执行,要么都不执行)
3 ES6
ES6的块级作用域与let
和const
搭配才能形成块级作用域
{
var a = 1
}
{
const b = 2
}
console.log(a) // 1
console.log(b) // b is not defined
a
没有在函数体中,所以不是函数作用域,而是在全局作用域中const
、let
会会直接以花括号为界限形成一个封闭的区域