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

来源:互联网 发布:驱动加密软件 编辑:程序博客网 时间:2024/05/22 14:48
<script>var i = 10;function a(){alert(i);}//a();//output:10</script>        <script>var i = 10;function a(){var i = 2;//在alert上可以输出2alert(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权威指南》中提出的“没有块级作用域”实际上就是上述的意思。


0 0
原创粉丝点击