1:在JavaScript中原本是没有块级作用域这个概念的。和C、java等高级语言不同。所以在使用if、for等存在代码块的语句时要格外注意。
2:在ECMAScript 6.0 这个版本,中定义了let关键字。这个let关键字是可以定义块级作用域的。当然我们这里提到的是关于 关键字var 的一些特性。
3:示例
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>块级作用域</title>
<script type="text/javascript">
//JavaScript中的块级作用域问题
function fun(){
alert(i);//定义没赋值,undefined
//变量i 是在for 的代码块中定义的。在java语言中。i只能在for 代码块中使用。
//但是因为JavaScript,i的回收是在方法结束,而不是代码块结束,
//所以for代码块结束后,i仍然可以被方法。
for(var i=0;i<5;i++){
alert(i);//0,1,2,3,4
}
//在这里可以方位for 循环中定义的i。因为i没有被回收。
alert(i);//5
}
//调用方法
fun();
//在这里是不能