学习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 相关文章推荐
html页面显示年月日时分秒和星期几的两种方式
Aug 20 Javascript
js读取配置文件自写
Feb 11 Javascript
JavaScript跨域方法汇总
Oct 16 Javascript
解析Node.js异常处理中domain模块的使用方法
Feb 16 Javascript
第一次接触Bootstrap框架
Oct 24 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
Mar 17 Javascript
微信小程序实现折叠与展开文章功能
Jun 12 Javascript
使用jquery Ajax实现上传附件功能
Oct 23 jQuery
JS实现数组深拷贝的方法分析
Mar 06 Javascript
微信小程序云开发(数据库)详解
May 17 Javascript
JavaScript动态检测密码强度原理及实现方法详解
Jun 11 Javascript
一个手写的vue放大镜效果
Aug 09 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 sybase_fetch_array使用方法
2014/04/15 PHP
php对文件夹进行相关操作(遍历、计算大小)
2015/11/04 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
jQuery语法总结和注意事项小结
2012/11/11 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
JavaScript 封装一个tab效果源码分享
2015/09/15 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
vue脚手架中配置Sass的方法
2018/01/04 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
React Hooks的深入理解与使用
2018/11/12 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
Python 专题一 函数的基础知识
2017/03/16 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
外贸采购员求职的自我评价
2013/11/26 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python