JavaScript的IIFE(即时执行方法)

IIFE :immediately-invoked function expression

(1)标准写法

1 (function(window, document, undefined) {
2     //你的代码
3 })(window, document);

例如:

1 //jQuery
2 (function($){})(jQuery);
3 //mui
4 (function($){})(mui);

(2)作用域Scope 
JavaScript有function作用域,所以function首先创建一个私有的作用域,在执行的时候都会创建一个执行上下文。

 1 var logMyName = function(name) {
 2     console.log(name);
 3 };
 4 logMyName(‘李四‘);
 5
 6 var logMyName = (function(name) {
 7     console.log(name);
 8 })(‘王五‘);
 9
10 var a = ! function() {
11     return true;
12 }();
13 console.log(a); // 打印输出 false
14
15 var b = (function() {
16     return true;
17 })();
18 console.log(b); // 打印输出 true
19
20 //强制JavaScript识别代码(一般很少这么用)
21 ! function() {
22     // ...
23 }();
24
25 + function() {
26     // ...
27 }();
28
29 - function() {
30     // ...
31 }();
32
33 ~ function() {
34     // ...
35 }();
1 (function($, window, document, undefined) {
2     // 使用 $ 指向 jQuery,比如:
3     // $(document).addClass(‘test‘);
4 })(jQuery, window, document);
5
6 (function(a, b, c, d) {
7     // 代码会被压缩为:
8     // a(c).addClass(‘test‘);
9 })(jQuery, window, document);

转自:http://rensanning.iteye.com/blog/2080429

时间: 2024-08-09 02:21:07

JavaScript的IIFE(即时执行方法)的相关文章

js 闭包 匿名函数 JavaScript的IIFE(即时执行方法)immediately-invoked function expression

参考:http://segmentfault.com/a/1190000000348228 http://segmentfault.com/q/1010000000442042 问题: (function(){ function a(){ alert("a"); } })();这里的(function(){xxx})(); 是什么意思,为什么这么写,有什么好处?答: function foo() {...} // 这是定义,Declaration:定义只是让解释器知道其存在,但是不会运

javascript中的立即执行函数(function(){…})()

javascript中的立即执行函数(function(){…})() 深入理解javascript中的立即执行函数,立即执行函数也叫立即调用函数,通常它的写法是用(function(){…})()包住业务代码,使用jquery时比较常见. ( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因并非如此.要

Jquery中$(document).ready() 和 JavaScript中的window.onload方法 比较

Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2.编写个数不同 window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个(最后一个)       

【转】JavaScript 的装载和执行

承接前面一篇文章<浏览器的渲染原理简介> ,本文来说下JavaScript的装载和执行. 通常来说,浏览器对于 JavaScript 的运行有两大特性: 1) 载入后马上执行 2) 执行时会阻塞页面后续的内容(包括页面的渲染.其他资源的下载) 所以,如果有多个JS文件被引入,那么对于浏览器来说,这些JS文件将被串行地载入并依次执行. 由于JavaScript 可能会操作 HTML文档的DOM 树,所以浏览器一般都不会像并行下载CSS文件一样并行下载JS文件,这是JS文件的特殊性造成的.因此,如

JavaScript中Object.prototype.toString方法的原理

在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. ? 1 2 var arr = []; console.log(Object.prototype.toString.call(arr)) //"[object Array]" 本文要讲的就是,toString方法是如何做到这一点的,原理是什么. ECMAScript 3 在ES3中,Object.prototype.toString方法的规范如下:

怎么样加快JavaScript加载和执行效率

概览 无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成.JavaScript 执行过程耗时越久,浏览器等待响应用户输入的时间就越长.浏览器在下载和执行脚本时出现阻塞的原因在于,脚本可能会改变页面或 JavaScript 的命名空间,它们对后面页面内容造成影响.一个典型的例子就是在页面中使用document.write(). JavaScript 代码内嵌示例 <html> <head> <title>Source

JavaScript中With 语句使用方法实例

内容导读: 有了 With 语句,在存取对象属性和方法时就不用重复指定参考对象,在 With 语句块中,凡是 JavaScript 不识别的属性和方法都和该语句块指定的对象有关.With 语句的语法格式如下所示: With Object { Statements } 对象指明了当语句组中对象缺省时的参考对象,这里我们用较为熟悉的 Document 对象对 With 语句举例.例如 当使用与 Document 对象有关的 write( )或 writeln( )方法时,往往使用如下形式: docu

JavaScript表单序列化的方法详解

本文介绍下,在javascript中实现表单序列化的方法,通过实例加深理解,有需要的朋友参考下吧. 在JavaScript中,可以利用表单字段的type属性,连同name和value属性一起实现对表单的序列. 首先,我们来了解下在表单提交期间,浏览器是怎样将数据发送给服务器的.对表单字段的名称和值进行URL编码,使用和号(&)分割.不发送禁用的表单字段.只发送勾选的复选框和单选按钮.不发送type为"reset"和"button"的按钮.多选择框中的每个选中

javascript中数组常用的方法

在JavaScript中,数组可以使用Array构造函数来创建,或使用[]快速创建,这也是首选的方法.数组是继承自Object的原型,并且他对typeof没有特殊的返回值,他只返回'object'. 运行[] instanceof Array他会返回ture.虽然结果是这样,但也有复杂的类数组对象,如字符串或arguments对象,但arguments对象并非是Array的实例,但他却拥有length属性,而且他的值是可以被索引的,因此他可以像一个数组那样被遍历. 这本文中,我将介绍数组原型的一