学习YUI.Ext 第二天


Posted in Javascript onMarch 10, 2007

遇到一些JS的语法上的问题,没有理解透,恶补基本功!

 

匿名函数 An anonymous function

没有名字的就叫作“匿名函数”,像这个

function(x,y){return x+y}

没有名字当然不能直接调用,也无法调用;最多能只能把它赋值或闭包处理(闭包是什么下面再讲),如:

var sum =function(x,y){return x+y};

alert(sum(1,2));

这时候,与传统写法是等价的 function sum(x,y){return x+y}.这样的写法让人感觉更OOP,因为sum变量就包含了function...这个函数体;

还可以闭包的方式调用该函数:

(functioin(x,y){return x+y})(1,2) //返回值3

代码很简洁。注意括号的使用,形式为(exp)()。这种用法可以称作 闭包closure。
后面括号的是参数,把这些参数放进fn里面立即计算,得出一个值 3。这实际上是一个表达式的运算。没想到fn函数体也可以放进去参与运算^_^(Using function as an expression)!(基本功:表达式Expression,其含义是通过计算后,始终会返回一个值,无论这个表达式有多长)

fn还可以以参数形式传递(passing function as argument to other functions)

var main_fn = function(fn,x,y){return fn(x,y)}

var sum = function (x,y){
   return x+y;
}

alert(main_fn(sum,1,2)) // result:3

总结一下(by an IBM Engineer's article, refer to IBM website,最好用心记一记)

Functions need not have names all the time.

Functions can be assigned to variables like other values.

A function expression can be written and enclosed in parenetheses for application later.

Functions can be passed as arguments to oher funcitons.

再谈闭包,闭包的作用是形成一个定义域,举一个很白痴的例子 1+(2+3),括号部分优先运算,或者换个说法,括号里面的归为一个范围,这个范围我不理你做什么事情都是你里面做的事情,与括号外界无关(好像是废话,--我是这样想的,就是这样写的@#@),程序上的理解也是这样。js有函数定义域function scope,因此,当使用this指向一个对象出现问题的时候,可考虑使用闭包。具体例子在:http://www.svendtofte.com/code/practical_functional_js/

Javascript 相关文章推荐
用js实现随机返回数组的一个元素
Aug 13 Javascript
javascript实现浏览器窗口传递参数的方法
Sep 03 Javascript
Javascript中的匿名函数与封装介绍
Mar 15 Javascript
JQuery中节点遍历方法实例
May 18 Javascript
Bootstrap每天必学之js插件
Nov 30 Javascript
Jquery实现简单的轮播效果(代码管用)
Mar 14 Javascript
js学习笔记之事件处理模型
Oct 31 Javascript
Node.js使用NodeMailer发送邮件实例代码
Mar 06 Javascript
React-router v4 路由配置方法小结
Aug 08 Javascript
实例解析Vue.js下载方式及基本概念
May 11 Javascript
微信小程序使用蓝牙小插件
Sep 23 Javascript
react结合bootstrap实现评论功能
May 30 Javascript
学习YUI.Ext基础第一天
Mar 10 #Javascript
JavaScript触发器详解
Mar 10 #Javascript
又一个图片自动缩小的JS代码
Mar 10 #Javascript
基础的prototype.js常用函数及其用法
Mar 10 #Javascript
优秀js开源框架-jQuery使用手册(1)
Mar 10 #Javascript
用JavaScript实现仿Windows关机效果
Mar 10 #Javascript
Javascript中的Split使用方法与技巧
Mar 09 #Javascript
You might like
用PHP进行MySQL删除记录操作代码
2008/06/07 PHP
PHP5+UTF8多文件上传类
2008/10/17 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
javascript+canvas实现刮刮卡抽奖效果
2015/07/29 Javascript
JavaScript中的Array 对象(数组对象)
2016/06/02 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
haskell实现多线程服务器实例代码
2013/11/26 Python
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
python绘制漏斗图步骤详解
2019/03/04 Python
python try 异常处理(史上最全)
2019/03/07 Python
Python3.5运算符操作实例详解
2019/04/25 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
详解python中__name__的意义以及作用
2019/08/07 Python
python双端队列原理、实现与使用方法分析
2019/11/27 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
军训自我鉴定200字
2014/02/13 职场文书
驾驶员培训方案
2014/05/01 职场文书
干部作风建设工作总结
2014/10/29 职场文书
经理聘任证明
2015/03/02 职场文书
2015入党自传书范文
2015/06/26 职场文书
班主任远程培训研修日志
2015/11/13 职场文书