zoukankan      html  css  js  c++  java
  • 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文件的全局作用域是共享的

  • 相关阅读:
    Java08_Lambda表达式
    Java基础02
    Java基础07
    JAVA基础06
    Java基础05
    Java基础01
    面向对象与面向过程
    Java常识2
    CSS常用属性记录
    geoserver发布热力图服务
  • 原文地址:https://www.cnblogs.com/ruoshuisanqian/p/9817078.html
Copyright © 2011-2022 走看看