javascript – 为什么有些js文件以(function(){

前端之家收集整理的这篇文章主要介绍了javascript – 为什么有些js文件以(function(){前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题在这里已经有一个答案:> Why do you need to invoke an anonymous function on the same line?18
简单,为什么一些js文件(如Ember或JQuery.js)以(function(){…})()开头. ?

解决方法

形式的代码(function(){/ * code here * /})()被称为“立即调用函数表达式”.它经常用于设置一个闭包,因此您可以定义变量而不污染全局范围.您可以在Ember,jQuery和几乎所有其他“插件”中找到它.污染全球范围通常是一个坏主意,但是插件必须适用于所有网站,因此特别重要的是确保它不会意外覆盖网站创建者使用的变量.

当然还有其他用途.例如,它可以用于“锚定”一个迭代变量,如下所示:

for( i=0; i<links.length; i++) {
    (function(i) {
        links[i].onclick = function() {alert(i);};
    })(i);
}
// without the IIFE,all links would alert the value of links.length instead.

还有一些情况下,我偶尔会使用IIFE,大多数人可能会嘲笑我,例如“准时”计算:

if( (function() {
      var party=document.getElementById('party').children,l=party.length,i,r=0;
      for( i=0; i<l; i++) if( party[i].children.length > 0) r++;
      return r;
  })() == 6) {
    // your Party is full
}

如果在跳入if语句之前计算出来,上面会好多了,所以不要像我这样做!

原文链接:https://www.f2er.com/js/151606.html

猜你在找的JavaScript相关文章