`

IIFE

 
阅读更多

1. 什么是IIFE?

IIFE :Imdiately Invoked Function Expression 立即执行的函数表达式。

例如:

+function ($) {   
  ...
}(window.jQuery);  

 这种写法称为 IIFE。

 

2. 函数表达式和函数声明?

函数表达式(Function Expression):var test = function() {}; 

函数申明(Function Declaration):function test() {};

 

3. 函数声明

函数声明时必须有函数名。

 

function a(){  
   alert('Function declaration');  
}  
a();  

 

 

4. 函数表达式

       函数表达式中的函数可以为匿名函数,也可以有函数名,但是该函数实际上不能直接使用,只能通过表达式左边的变量 a 来调用。例如:

var a = function(){  
      alert('Function expression');  
}  
var b = new a();  

        通过一元操作符+变成了函数表达式。也可以使用 - ~ !等其他一元运算符或者括号,目的是为了引导解析器,指明运算符附近是一个表达式。以下是三种经典方式 :

+function () {   
    ...
};  
 
(function () {  
    ...
});  
 
void function() {   
   ...
};  

 函数表达式通过 末尾的() 来调用并运行。

+function () {   

}();  

(funtion () {  

})();  

 也可以传递参数:

+function (x) {  
     console.log(x);  
}(3);  
  
+function ($) {  
   ...
}(window.jQuery);   

 

5. 使用IIFE的好处

提升性能、有利于压缩、避免冲突、依赖加载。

 

 例如:

!function (win,d) {
	var title = "苏宁二手优品_放心的二手交易市场 –苏宁易购二手优品"; // 旧的页面title
	var newTitle = "10004-null-100039/null-苏宁二手优品/放心的二手交易市场/苏宁易购二手优品-null-null-null";	//新的页面规则
	if (win.sndevice.isApp) { // 易购APP
		if (win.sndevice.isAndroid) { // android
			d.addEventListener("deviceready", function() {
				baseApi.setNewPageTitle(newTitle);
            }, false);
		}
		if (win.sndevice.isIOS) { // IOS
			d.addEventListener("SNNativeClientReady", function() {
				if (win.SNNativeClient.setNewPageTitle) {
					win.SNNativeClient.setNewPageTitle(title, newTitle);
				}
            }, false);
		}	
	}
}(window, document);

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics