经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JSJS库框架 » JavaScript » 查看文章
js文件命名冲突理解
来源:cnblogs  作者:十里霜天  时间:2018/10/20 15:27:40  对本文有异议

在一个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文件的全局作用域是共享的

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号