js匿名函数--转了
一、什么是匿名函数? 在Javascript定义一个函数一般有如下三种方式: 函数关键字(function )语句:function fnMethodName(x) {alert(x); }函数字面量(Function Literals):var fnMethodName = function (x) {alert(x); }Function()构造函数:var fnMethodName = new Function('x', 'alert(x);')上面三种方法定义了同一个方法函数fnMethodName,第1种就是最常用的方法,后两种都是把一个函数复制给变量fnMethodName,而这个函数是没有名字的,即匿名函数。实际上,相当多的语言都有匿名函数。二、函数字面量和Function()构造函数的区别虽然函数字面量是一个匿名函数,但语法允许为其指定任意一个函数名,当写递归函数时可以调用它自己,使用Function()构造函数则不行。var f = function fact(x) {if (x < = 1)return 1;elsereturn x * fact(x - 1); };Function()构造函数允许运行时Javascript代码动态的创建和编译。在这个方式上它类似全局函数eval()。Function()构造函数每次执行时都解析函数主体,并创建一个新的函数对象。所以当在一个循环或者频繁执行的函数中调用Function()构造函数的效率是非常低的。相反,函数字面量却不是每次遇到都重新编译的。用Function()构造函数创建一个函数时并不遵循典型的作用域,它一直把它当作是顶级函数来执行。var y = "global"; function constructFunction() {var y = "local";return new Function("return y"); // 无法获取局部变量}alert(constructFunction()()); // 输出 "global"和函数关键字定义相比Function()构造器有自己的特点且要难以使用的多,所以这项技术通常很少使用。而函数字面量表达式和函数关键字定义非常接近。考虑前面的区别,虽然有消息说字面量的匿名函数在OS X 10.4.3下的某些webkit的引擎下有bug,但我们平常所说的匿名函数均指采用函数字面量形式的匿名函数。更多详细内容可以阅读《JavaScript : The Definitive Guide,5th Edition》的Functions那章。三、匿名函数的代码模式昨天hedger wang在他的blog介绍了几种匿名函数的代码模式:错误模式:其无法工作,浏览器会报语法错。function () {alert(1);}();函数字面量:首先声明一个函数对象,然后执行它。(function () {alert(1);})();优先表达式:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数。(function () {alert(2);}());Void操作符:用void操作符去执行一个没有用圆括号包围的一个单独操作数。void function () {alert(3);}()这三种方式是等同的,hedger wang因为个人原因比较喜欢第3种,而在实际应用中我看到的和使用的都是第1种。四、匿名函数的应用《Javascript的一种模块模式》中的第一句话就是“全局变量是魔鬼”。配合var关键字,匿名函数可以有效的保证在页面上写入Javascript,而不会造成全局变量的污染。这在给一个不是很熟悉的页面增加Javascript时非常有效,也很优美。实际上,YUI以及其相应的范例中大量使用匿名函数,其他的Javascript库中也不乏大量使用。Javascript的函数式编程(functional programming)的基石。具体请看《用函数式编程技术编写优美的 JavaScript》和《函数式JavaScript编程指南》。
转载于:https://www.cnblogs.com/bisu/p/4512702.html
js匿名函数--转了相关推荐
- java调用js匿名函数参数,js匿名函数作为函数参数详解
由衷的感叹,js真是烦. 学到现在,渐渐理解了什么是:语言都是通用的,没有好不好,只有擅长不擅长. 继承,多态,甚至指针,c能实现,c++,java有,javascript(和java是雷锋和雷峰塔的 ...
- js匿名函数、箭头函数,区别
js匿名函数.箭头函数,以及他们的区别 匿名函数 箭头函数 区别 1.匿名函数 简单点说就是没有名字的函数,在声明函数时不写函数名称,(将函数赋值给变量)叫匿名函数. 匿名函数可以有效的保证在页面上写 ...
- js匿名函数和立即执行函数
js匿名函数和立即执行函数 1. 匿名函数 a)写法 b) 特点 2. 立即执行函数 a) 写法 b) 特点 c) 示例 1. 匿名函数 匿名函数又叫拉姆达函数, 使用前需要先赋值. a)写法 //h ...
- js 匿名函数_编写高质量箭头函数的5个最佳做法
作者:Dmitri Pavlutin译者:前端小智 来源:dmitripavlutin.com 箭头功能值得流行.它的语法简洁明了,使用词法绑定绑定 this,它非常适合作为回调.在本文中,通过了解决 ...
- js 匿名函数_javascript:函数的使用
大家好,我是专注于前端开发,前端入门,精神可爱的前端小学妹,本期为大家带来的Web前端学习知识是"javascript:函数的使用",喜欢Web前端的朋友,一起看看吧! 主要内容: ...
- js匿名函数和具名函数
按照ECMAScript标准,函数表达式的样式如下(opt记号代表的是可选的,也就是可有可无的意思): FunctionExpression : function Identifier opt ( F ...
- JS 匿名函数——几种不同的调用方式
匿名函数声明和使用 匿名函数有两种用法: 赋值 自我执行 1.声明一个匿名函数,直接赋值给某一个事件 windon.onload = function(){alert('hello'); }; 2.使 ...
- js 匿名函数及闭包
转载来源:https://www.cnblogs.com/chenxianbin89/archive/2010/01/28/1658392.html 网上很多解释,我无法理解,我想知道原理...这篇文 ...
- 有趣的js匿名函数写法(function嵌套)
例子没有什么实际意义,只能做为思路参考 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&quo ...
最新文章
- java比较字符引用地址_java中的比较运算符== 与 equals()方法
- Prototype Pattern
- mysql常见错误及解决办法_mysql常见错误代码、原因及处理办法
- 数据库流行度8月排行榜:Oracle 飙升 和 PostgreSQL 绝尘领跑第二梯队
- go按行读取数据的坑
- USACO 4.3.1 Buy Low, Buy Lower
- 到底什么是模型预测控制MPC(一)
- 数字万用表判断绝缘栅场效应管的好坏
- Linux -- 代理服务器(Squid Server)的配置与应用2
- ajax请求有多少种写法,Ajax 请求的三种写法
- day06 Elasticsearch搜索引擎2
- 《GOOGLE HACKS巧妙使用网络搜索的技巧和工具(第二版)》
- VS2017初学者如何打开右侧的解决方案资源管理器
- 文件系统之软连接、硬链接的区别/文件删除与空间的联系/df和du的区别
- 【C语言】PAT乙级1002 :写出这个数
- 站点类型、tdk布局和采集规则
- 使用VisualGDB实现esp32s2 usb HID功能
- js中showModalDialog函数用法
- 实验记录 | 6/7 收一下尾巴
- 北斗导航 | GBAS:双星座/双频点 CAT II/III 完好性(DC/DF GBAS Integrity)
热门文章
- 08 内存分配和程序内存布局
- e0266 cout 不明确_荐书 | 不正义的时代,识别不正义的多重面孔
- 关联 VMware 产品的内部版本号和版本 (1014508)
- 2019年全网首发-vSphere 7之VCSA 7.0 RC部署指南(转载)
- Spring Boot学习总结(16)——为什么说Java程序员到了必须掌握Spring boot的时候了?
- Docker学习总结(31)——使用Maven插件构建docker镜像
- JavaScript学习总结(15)——十大经典排序算法的JS版
- php/eq,thinkphp中eq标签的使用
- 中修改环境变量_系统小技巧:彻底弄懂Windows 10环境变量
- cortex m4 中文手册_奥迪RS4 Avant都来了,新一代宝马M4还会远吗?