`
didiluck
  • 浏览: 10309 次
  • 性别: Icon_minigender_1
  • 来自: 山东-->北京
社区版块
存档分类

理解javascript中的“自动执行函数”

 
阅读更多
  因为之前看了jquery的源码,对于源码中的一开始的()();不是很理解,后来到网上查了查,有了大致的了解,怕忘记了,所以记录一下。
(function(a){alert(a)})(1);
//上面的代码就是一个自动执行的js函数,和jquery中的一样。其中的
function(a){alert(a)}
//是一个匿名函数,接受一个参数。随后的(1)表示对这个匿名函数的调用,并且传递了一个参数,这与我们平常声明一个函数,并调用是一样的:
function x(a) {
  alert(a);
}
x();
//现在来说一下对于这个自动执行函数我所理解的执行顺序:
//首先,第一个小括号,也就是“(function(a){alert(a)})”是一个运算符号,就像:
(1+2)*3
//一样,这样,就是把这个匿名函数给返回,同时紧跟着后面的小括号“(1)”就把它给调用了。如果我们把包裹住匿名函数的小括号给去掉的话,
function(a){alert(a)}(1);
//这样,就不会执行。这时,虽然有了匿名函数,但是并没有对这个函数的引用,后面的小括号仅仅是一个运算优先级而已,并不是对方法的执行。
//不过我们这样写就可以执行了:
+function(a){alert(a)}(1);
//或者
-function(a){alert(a)}(1);
//或者
void function(a){alert(a)}(1);
//或者
new function(a){alert(a)}(1);
//上面的写法都可以。
//前面添加的“+,-,void,new”是运算符和执行关键字,这样会强制匿名函数在声明后返回引用,而后面的小括号就是对函数的执行
分享到:
评论

相关推荐

    编写可维护的JavaScript(中文)

    《编写可维护的JavaScript》向开发人员阐述了如何在团队开发中编写具备高可维护性的JavaScript代码,书中详细说明了作为团队一分子,应该怎么写JavaScript。本书内容涵盖了编码风格、编程技巧、自动化、测试等几方面...

    【JavaScript源代码】JavaScript的function函数详细介绍.docx

     通过函数来封装任意多条语句,而且可以在任何地方、任何时间调用执行。  而我们的JavaScript脚本语言比较特殊,相对于C语言,它的参数是不需要数据类型加持的。返回值return,我就不过多描述,他是和 C语言通的,...

    深入理解JavaScript系列(4) 立即调用的函数表达式

    主要是看个人如何理解,因为有的人说立即调用,有的人说自动执行,所以你完全可以按照你自己的理解来取一个名字,不过我听很多人都叫它为“自执行”,但作者后面说了很多,来说服大家称呼为“立即调用的函数表达式”...

    编写可维护的javascript(英文)

    《编写可维护的JavaScript》向开发人员阐述了如何在团队开发中编写具备高可维护性的JavaScript代码,书中详细说明了作为团队一分子,应该怎么写JavaScript。本书内容涵盖了编码风格、编程技巧、自动化、测试等几方面...

    thunk-run:javascript Java语言中的thunk函数和function *的伪造简单基本理解

    Thunkify Runner和Promisify Runner。用法与Thunkify功能一起await 。 var fs = require ( "fs" ) ;var path = require ( "path" ) ;var thunkify = require ( "@...// Generator Thunk自动执行器单独为一个thunkifyR

    Javascript 垃圾收集机制介绍理解

    Javascript 并不像 C,C++ 那样需要开发者手动去清除垃圾,在编写 Javascript 程序是,开发者无需关心内存使用问题,所需内存分配以及无用内存(垃圾)的回收完全实现了自动管理。究其根源,主要是程序收集那些不再...

    php网络开发完全手册

    7.5.6 通过回调函数执行正则表达式 7.5.6 的搜索和替换——preg_replace_ 7.5.6 callback 114 7.5.7 用正则表达式进行字符串分割 7.5.7 ——preg_split 115 7.6 字符操作的注意事项 117 7.7 小结 118 第8章 数组操作...

    Javascript中prototype与__proto__的关系详解

    比如像Object和Array,两者属于内置的原生的构造函数,在运行时会自动的出现在执行环境中,可以直接使用。如下: var arr = new Array();//使用Array构造函数创建了一个array实例arr arr[0]="a"; arr[1]="b"; alert...

    JavaScript高级教程

    第 1 章 JavaScript 是什么...............................................1 3 1.1 历史简述..............................................1 1.2 JavaScript 实现................................................

    精通AngularJS part1

    通过编译函数中的transcludeFn来获取嵌入函数252 通过$transclude在指令控制器中获取嵌入函数253 使用嵌入创建一个if指令253 在指令中使用priority属性255 93理解指令控制器256 为指令控制器注入特殊依赖257 ...

    asp.net知识库

    完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎 正式发布表达式计算引擎WfcExp V0.9(附源码) 运算...

    [完整][中文][WEB安全测试].(美)霍普.扫描版.pdf

     本书中的秘诀所覆盖的基础知识包括了从观察客户端和服务器之间的消息到使用脚本完成登录并执行Web应用功能的多阶段测试。在本书的最后,你将能够建立精确定位到Ajax函数的测试,以及适用于常见怀疑对象(跨站式脚本...

    【卷一/共两卷】AJAX实战pdf高清版90M

    4.3.3 在JavaScript中实现灵活的事件模型 4.4 Ajax应用中的模型 4.4.1 使用JavaSctjpt为业务领域建模 4.4.2 与服务器交互 4.5 从模型生成视图 4.5.1 JavaScript对象的反射 4.5.2 处理数组和对象 4.5.3 添加控制器 ...

    jquery-1.1.3 效率提高800%

    或者,你也可以指定jsonp的数据类型的回调函数,此函数会自动添加到Ajax请求中。 参数选项: async(true) 数据类型: Boolean 默认情况下,所有的请求都是异步发送的(默认为true)。 如果需要发送同步请求,...

    DWR.xml配置文件说明书(含源码)

    从java中传递null值到javascript是没有任何危险性的,所以DWR将这个作为默认的converter,所以你自己不用再把这个converter添加到配置文件的部分中去. 基本类型的converter转换int,boolean,double等.当然还包括对应的...

    jquery基础教程高清版PDF.part5.rar

     4.4.3 理解数字的含义   4.4.4 改进自定义动画效果   4.5 并发与排队效果   4.5.1 处理一组元素   4.5.2 处理多组元素   4.6 简单概括   4.7 小结  第5章 DOM操作——基于命令改变页面   ...

    Jqury基础教程

    5.1.2 深入理解$()工厂函数 5.2 插入新元素 5.3 移动元素 5.3.1 标注、编号和链接到上下文 5.3.2 插入脚注 5.4 包装元素 5.5 复制元素 5.5.1 连同事件一起复制 5.5.2 通过复制创建突出引用 5.5.3 通过CSS使...

    ASP.NET.4揭秘

    20.1.1 理解自动属性721 20.1.2 理解初始化器721 20.1.3 理解类型推断723 20.1.4 理解匿名类型724 20.1.5 理解泛型724 20.1.6 理解lambda表达式726 20.1.7 理解扩展方法729 20.1.8 理解linq730 20.2 创建linq to sql...

    ASP.NET 控件的使用

    1.2.3 理解和处理控件事件 12 1.2.4 视图状态 17 1.3 ASP.NET页面 20 1.3.1 动态编译 20 1.3.2 控件树 23 1.3.3 使用代码隐藏页面 24 1.3.4 处理页面事件 27 1.3.5 使用Page.IsPostBack属性 29 1.3.6 调试和跟踪ASP...

    PHP和MySQL WEB开发(第4版)

    19.4 使用程序执行函数 19.5 与环境变量交互:getenv()和putenv() 19.6 进一步学习 19.7 下一章 第20章 使用网络函数和协议函数 20.1 了解可供使用的协议 20.2 发送和读取电子邮件 20.3 使用其他Web站点的数据 20.4...

Global site tag (gtag.js) - Google Analytics