在JS规范中,不像其他语言(java等)有块级作用域之说,以具体代码为证。
1.普通代码块
{
var num1 = 5;
//在某些语言中,代码块中定义的变量,外部是访问不到的
}
console.log(num1);//5
2.if代码块
if (true) {
var sum1 = 7;
}
console.log(sum1);//7,代码块只要执行了就能访问到
if (false) {
var sum2 = 7;
}
console.log(sum2);//undefined
3.for代码块
for (var i = 0; i < 10; i++) {
var ccc = "abc";
}
console.log(ccc);//"abc"
console.log(i);//10
//某些语言中变量i只能在for循环内部访问(局部变量)
//没有块级作用域 但是有函数作用域
以上是es5中的几种用法,在es6以上的规范中,通过let关键字,可以限定块级作用域,后续将进行进一步讨论。