IIEF-立即调用函数表达式

在jquery和requirejs等开源js项目中经常看到类似好下的语句

  (function(){
    alert("ieef");
  }());

类似于这样的语句就是js中的立即调用函数表达式。

为了理解这样的函数可以拆一下。首先写一个我们熟悉的函数定义,然后立即调用

  function iife(){
    alert("iife");
  }
  iife();

这个效果虽然和上面的iife一样,但是带来一个副作用:就是iife函数会污染全局变量。也就是说如果之前已经定义了一个iife函数或者iife变量,那个就会被这个变量所覆盖,为了避免发生这样的情况最好的解决方案是使用一个匿名函数,然后让式名函数立即执行。

   function(){
     alert("iife");
    }();

如果这样写的话就发生了js语法错误。

如果在函数定义之前加个(),就可以按照我们预期执行了。

  (function(){
    alert("iife");
  })();

最外面的那个(),可以放到里面,这样也能运行。

  (function(){
    alert("iife");
   }());

这就是我们在很多开源项目中常见的iife。

传递参数的格式。

  (function(global){
    alert("iife");
    alert(global);
  }(window));

你可能感兴趣的:(IIEF-立即调用函数表达式)