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

<!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 同名变量。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值