js文件命名冲突理解

在一个index.html文件里先后导入a.js和b.js文件
a.js文件里写上var s = 2;console.log(s);
b.js文件里写上var s = 5;
这时a.js和b.js用了相同的变量名,这就是命名冲突
命名冲突会导致如果修改b.js里那个重名的变量,则a.js里的重名变量也会被修改
但这里a.js里仍然输出2,因为这里是先执行a.js再执行b.js,当在b.js里修改s的值时,a.js已经执行完了所以虽然s的值被修改了,但是似乎对a.js没什么影响

然而,当a.js里有异步执行的代码(如定时器)时,情况就不同了,如:
var s = 2;
setInterval(function() {
console.log(s);
}, 1000);

b.js代码:var s = 5;
此时会发现控制台不断输出5而不是2,这里a.js就受到了影响

所以,js模块化的好处就是避免了命名冲突,同时避免命名冲突还可以用匿名函数自运行的方式(function() {})()

补充:一个<script></script>或一个js文件不代表一个作用域,多个js文件的全局作用域是共享的

转载于:https://www.cnblogs.com/ruoshuisanqian/p/9817078.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值