黑马程序员技术交流社区
标题:
JavaScript变量的作用域
[打印本页]
作者:
王毅
时间:
2013-3-13 21:04
标题:
JavaScript变量的作用域
在JS里面
声明局部变量和全局变量的区别
首先全局变量定义作用于全局
<script>
var i;
</script>
局部变量作用于块
<script>
var i;
function abc()
{
var a;
b=10;
}
</script>
这里的a为局部变量,但是b是全局变量
因为只要声明变量时不声明var就表示该变量就默认转为全局变量
重点是:函数中声明的变量的作用域在整个函数,不分块级作用域
例子:
<SCRIPT LANGUAGE="javascript">
var i=1;
function a2()
{
alert(i);
var i = 2;
alert(i);
if(true){if(true){if(true){var a=3;}}}
alert(a);
}
</script>
整个例子中第一个alert会显示undefine 未声明
因为不管全局变量.
局部的变量的优先级高于全局变量
但是只要据我猜测是当调用函数的时,会先加载所有的变量,带不会带值,所以这里就会出现undefine,据我试验,发现只要是变量都会在SCRIPT脚本运行时先加载,但不会带值!
(原因是:当局部变量在函数嵌套函数的时候,当在最里层的函数碰到变量时会调用变量解析器,这个时候变量解析器首先会在这个函数内找到该变量,如果找不到就会继续往外层寻找到该变量知道找到为止,找不到会报错)
第二个alert会显示2,因为已经复制了
第三个alert会显示3,因为不管a声明在哪里只要在函数内,他的作用域就是函数内.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2