您的位置:首页 > Web前端 > JavaScript

JavaScript中没有块级作用域程序举例例证

2015-11-04 23:15 681 查看
<script>
var i = 10;
function a(){
alert(i);
}
//a();//output:10
</script>
 
<script>
var i = 10;
function a(){
var i = 2;//在alert上可以输出2
alert(i);
//var i = 2;//在alert下因为未赋值所以输出undefined:不明确的变量
}
a();//output:undefined
<pre name="code" class="javascript">	</script>


第一个script里面可以输出10,在变量解析过程中首先查找局部的作用域,然后查找上层作用域。在代码一的函数当中没有定义变量i,于是查找上层作用域(全局作用域),进而进行输出其值。但是在代码二的函数内定义了变量i(无论是在alter之后还是之前定义变量,都认为在此作用域拥有变量i),于是不再向上层的作用域进行查找,直接输出i。但是不幸的是此时的局部变量i并没有赋值,所以输出的是undefined。
《JavaScript权威指南》中提出的“没有块级作用域”实际上就是上述的意思。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript