Javascript的匿名函数与自执行
2015-06-02 11:09
686 查看
1:匿名函数的创建:
形如这样的方式创建:
(function(x,y){})(2,3);
这里创建了一个匿名函数(在第一个括号内),第二个括号内用于调用该匿函数的调用,并传入相应的参数.
2:自执行的匿名函数
1.1:什么是自执行的匿名函数?
它是只形如正阳的函数:(function{code})();
1.2:疑问 为什么(function { code })();可以执行,而function {//code}();却不会执行呢?
1.3:分析
(1)首先,要清楚两者的区别;
(function{code}) 是表达式,function {code } 是函数的声明;
(2)其次,js '预编译'的特点;
js在预编译阶段,会解释函数声明,但是却会忽略表达式.
(3)当 js 执行function (){} 时 由于function(){}在预编译阶段已经被解释过,所以js会跳过function(){},试图去执行();故会报错;当js执行到(function{})()时,由于(funciton{})是表达式,js回去对它求解得到返回值,由于返回值是一个函数,故而遇到();时,遍会被执行.
另外,函数转换为表达式的方法并不一定要靠分组操作符(),我们还可以使用void !等操作符.........
例如:!function(){
alert("另外的匿名函数的自执行");
}();
形如这样的方式创建:
(function(x,y){})(2,3);
这里创建了一个匿名函数(在第一个括号内),第二个括号内用于调用该匿函数的调用,并传入相应的参数.
2:自执行的匿名函数
1.1:什么是自执行的匿名函数?
它是只形如正阳的函数:(function{code})();
1.2:疑问 为什么(function { code })();可以执行,而function {//code}();却不会执行呢?
1.3:分析
(1)首先,要清楚两者的区别;
(function{code}) 是表达式,function {code } 是函数的声明;
(2)其次,js '预编译'的特点;
js在预编译阶段,会解释函数声明,但是却会忽略表达式.
(3)当 js 执行function (){} 时 由于function(){}在预编译阶段已经被解释过,所以js会跳过function(){},试图去执行();故会报错;当js执行到(function{})()时,由于(funciton{})是表达式,js回去对它求解得到返回值,由于返回值是一个函数,故而遇到();时,遍会被执行.
另外,函数转换为表达式的方法并不一定要靠分组操作符(),我们还可以使用void !等操作符.........
例如:!function(){
alert("另外的匿名函数的自执行");
}();
相关文章推荐
- js原型继承
- javascript深入理解js闭包
- JS跳转到另一地址
- js 性能优化整理之 惰性载入
- Javascript中正则表达式详解(转载)
- 谈谈自己对js闭包,执行上下文,作用域链,活动对象AO,变量对象VO的理解
- JSON字符串写法和使用
- web开发常用的js验证,利用正则表达式验证邮箱、手机、身份证等输入
- 使用X-UA-Compatible来设置IE浏览器兼容模式
- 年月日时分秒加星期的即时显示的JS
- JS倒计时源码
- JavaScript 闭包初步
- shakejs是一个摇一摇的工具
- js 打印功能
- jsdoc注释规范工具(使用 JSDoc 3 自动生成 JavaScript API 文档)
- jsp 使用properties配置文件方法
- javascript压缩工具:YUI compressor
- 简单JS传出参数例子
- Newtonsoft.Json与datatables.net的使用 完美分页
- mas.js服务开启