学习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页面上拖放移动标签
Jan 08 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
Nov 17 Javascript
js 字符串转换成数字的三种方法
Mar 23 Javascript
jQuery的load()方法及其回调函数用法实例
Mar 25 Javascript
3种js实现string的substring方法
Nov 09 Javascript
6种javascript显示当前系统时间代码
Dec 01 Javascript
javascript中获取元素标签中间的内容的实现方法
Oct 08 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
May 23 Javascript
Vue+Vant 图片上传加显示的案例
Nov 03 Javascript
浅谈Ant Design Pro 菜单自定义 icon
Nov 17 Javascript
微信小程序实现点击导航条切换页面
Nov 19 Javascript
JavaScript实现雪花飘落效果
Dec 27 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
实现“上一页”和“下一页按钮
2006/10/09 PHP
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
用PHP程序实现支持页面后退的两种方法
2008/06/30 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
js Map List 遍历使用示例
2013/07/10 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
AngularJS内置指令
2015/02/04 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
使用python 3实现发送邮件功能
2018/06/15 Python
Python中extend和append的区别讲解
2019/01/24 Python
python从子线程中获得返回值的方法
2019/01/30 Python
python matplotlib实现双Y轴的实例
2019/02/12 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
python 直接赋值和copy的区别详解
2019/08/07 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
大学运动会通讯稿
2014/01/28 职场文书
新年晚会主持词
2014/03/24 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
《实心球》教学反思
2016/02/23 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle