学习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 相关文章推荐
文件上传插件SWFUpload的使用指南
Nov 29 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
May 09 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
Sep 15 Javascript
实例教学如何写vue插件
Nov 30 Javascript
iconfont的三种使用方式详解
Aug 05 Javascript
js中的数组对象排序分析
Dec 11 Javascript
vue组件之间通信方式实例总结【8种方式】
Feb 22 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
Sep 21 Javascript
p5.js绘制旋转的正方形
Oct 23 Javascript
JS控制只能输入数字并且最多允许小数点两位
Nov 24 Javascript
JS字符串补全方法padStart()和padEnd()
May 27 Javascript
使用jQuery实现购物车
Oct 29 jQuery
学习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.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
基于jquery 的一个progressbar widge
2010/10/29 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
Javascript Throttle & Debounce应用介绍
2013/03/19 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
node.js中的console.warn方法使用说明
2014/12/09 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
js案例之鼠标跟随jquery版(实例讲解)
2017/07/21 jQuery
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
Python通过两个dataframe用for循环求笛卡尔积
2020/04/29 Python
为什么说python适合写爬虫
2020/06/11 Python
pytorch SENet实现案例
2020/06/24 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
Jones Bootmaker官网:优质靴子和鞋子在线
2020/11/30 全球购物
管理工程专业求职信
2014/08/10 职场文书
2014年除四害工作总结
2014/12/06 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
导游词之山东八大关
2019/12/18 职场文书
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers