一直以来这个概念混沌不清,时而以为{}中的都是局部,时而以为{}不能限制变量范围;
在JavaScript语法中,出现{}的语句情况如下:
//空块作用域
{}
//条件语句
if(){} else{}
switch(){}
while(){}
//循环
for(){}
//对象
var obj = {};
//函数
funciton fun(){}
只有在函数中声明的变量才是局部变量,在其他块作用域中声明的都是全局变量(ES5语法 var)
{
var one = "空 作用域块";
}
if([]){
var two = "if 作用域块";
}
function fun(){
var three = "函数 作用域块";
}
console.log(one)
console.log(two)
console.log(three) //报错,变量为定义
在ES6 中可以通过 let 在任意块作用域中声明局部变量;
let 使得{}具有了真正的块作用域的效果;
{
let two ="two"
}
console.log(two)
//输出结果
VM610:1 Uncaught ReferenceError: two is not defined