javascript里有关全局变量和局部变量的一些细节

来源:互联网 发布:sql 查询结果拼接 编辑:程序博客网 时间:2024/05/02 11:21
<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title></title></head><body>    <script type="text/javascript">       var x=1;        function calc(){            document.write('函数体内x='+x+'<br />');            var x= 3;            document.write('定义局部变量后函数体内x='+x+'<br />');            x=5;        }       calc();       document.write('函数体外x='+x+'<br />');    </script></body></html>

输出结果为:

函数体内x=undefined
定义局部变量后函数体内x=3
函数体外x=1

思考:第一句x=undefined和var x=3相关,如果注释掉var x=3,那么第一句结果是x=1,结论是只要函数里存在同名局部变量,局部变量的优先级一定高于全局变量。为了加深理解,该函数体等价于

<span style="font-size:10px;">function calc(){            var x;            document.write('函数体内x='+x+'<br />');            x= 3;            document.write('定义局部变量后函数体内x='+x+'<br />');            x=5;        }</span>
另:一旦函数里出现var x(不论在什么位置),该x即为局部变量,即无法对同名的全局变量产生任何影响。换句话说,如果要在函数里改变全局变量的值,则不能在任何位置出现var 同名变量。

0 0
原创粉丝点击