学习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与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
Mar 12 Javascript
更优雅的事件触发兼容
Oct 24 Javascript
innerText 使用示例
Jan 23 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
Aug 07 Javascript
JavaScript中的this到底是什么(一)
Dec 09 Javascript
JS实现alert中显示换行的方法
Dec 17 Javascript
Zabbix添加Node.js监控的方法
Oct 20 Javascript
jQuery实现的手风琴侧边菜单效果
Mar 29 jQuery
解决LayUI数据表格复选框不居中显示的问题
Sep 25 Javascript
node事件循环和process模块实例分析
Feb 14 Javascript
关于vue 结合原生js 解决echarts resize问题
Jul 26 Javascript
vue实现简易的双向数据绑定
Dec 29 Vue.js
学习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
PHP4在Windows2000下的安装
2006/10/09 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
详谈js中window.location.search的用法和作用
2017/02/13 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
快速处理vue渲染前的显示问题
2018/03/05 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
Element UI框架中巧用树选择器的实现
2018/12/12 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
vue自定义组件实现双向绑定
2021/01/13 Vue.js
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
安装Python的教程-Windows
2017/07/22 Python
Python set常用操作函数集锦
2017/11/15 Python
用Python识别人脸,人种等各种信息
2019/07/15 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
人代会标语
2014/06/30 职场文书
2014年共青团工作总结
2014/12/10 职场文书
学校食品安全责任书
2015/01/29 职场文书
趣味运动会广播稿
2015/08/19 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
python中的None与NULL用法说明
2021/05/25 Python