JavaScript里函数内部直接修改全局变量问题及封闭函数问题

在这里插入图片描述
这里就是一个很普通的定义变量,函数内部修改变量的问题,不调用moving,输出的是0,可调用一下后输出的就是1。说一下我遇到问题的原因,我学的python,这里是前端上的问题,因为受python的影响,开始以为函数内部修改全局变量需要先在函数内部声明一下,然后这里它不声明,直接就改了,我是一脸懵逼,百度答案也不是我想要的,后来在一个学习群里一位热心的无名大哥给了我解释(谢谢那位大哥了,就这一个小问题,我也是搜了好久),我也分享一下:
js中变量作用范围与声明方式有关,var声明的是在文件范围内全局变量,let一般作用于声明在函数范围内的局部变量,因此,我们在moving函数中改为let ileft = 1,这样我们修改的ileft就不会作用到全局变量了。
在这里插入图片描述

<script type="text/javascript">
        var inum=1;
        (function() {
            alert(inum);
            var inum=2;//这里用var,定义全局变量,不过只在函数内生效,不用var的话会修改全局变量
            alert('hello world');
            alert(inum);
        })();
        alert(inum);
</script>

封闭函数可以让我们在对功能添加的时候不对之前的产生影响,我们可以在封闭函数内放心的定义变量,即使与全局变量名称相同也没事,因为封闭函数内相当于一个新的空间,它不会对全局变量产生影响(当然注意用var)。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值