我什么时候应该使用语法"(function(){...})();"?

and*_*lzo 8 javascript

我的查询用于"(function(){...})();" 鉴于我不是插件.例如" http://piecesofrakesh.blogspot.com/2009/03/downloading-javascript-files-in.html "

(function() {        
  var s = [
    "/javascripts/script1.js",
    "/javascripts/script2.js"
  ];

  var sc = "script", tp = "text/javascript", sa = "setAttribute", doc = document, ua = window.navigator.userAgent;

  for(var i=0, l=s.length; i<l; ++i) {
    if(ua.indexOf("MSIE")!==-1 || ua.indexOf("WebKit")!==-1) {
      doc.writeln("<" + sc + " type=\"" + tp + "\" src=\"" + s[i] + 
          "\" defer></" + sc + ">");
    } else {
      var t=doc.createElement(sc);
      t[sa]("src", s[i]);
      t[sa]("type", tp);
      doc.getElementsByTagName("head")[0].appendChild(t);
    }
  }
})();
Run Code Online (Sandbox Code Playgroud)

要么

var s = [
    "/javascripts/script1.js",
    "/javascripts/script2.js"
];
...
Run Code Online (Sandbox Code Playgroud)

谢谢.

rix*_*rrr 24

这样做是为了避免命名冲突.

声明函数时,该函数有自己的变量名称空间.通过将代码包装在立即调用的函数中,可以避免使用自己的值覆盖全局变量.

在这种情况下s,sc并分配一个值.如果您在全局范围内执行此操作,并且其他脚本已将这些名称的变量用于不同目的,则会导致其他脚本失败.通过引入新的范围,标识符ssc现在所说的不是命名变量的不同(本地绑定)变量ssc,在全球范围存在.