学习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 相关文章推荐
用jquery设置按钮的disabled属性的实现代码
Nov 28 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
Mar 08 Javascript
js简单实现删除记录时的提示效果
Dec 05 Javascript
基于jQuery的ajax方法封装
Jul 14 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
Sep 04 Javascript
Angular4表单验证代码详解
Sep 03 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
Nov 21 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
Dec 01 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
Mar 21 Javascript
JavaScript设计模式之工厂模式简单实例教程
Jul 03 Javascript
Angular7.2.7路由使用初体验
Mar 01 Javascript
详解新手使用vue-router传参时注意事项
Jun 06 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中实现记住密码自动登录的代码
2011/03/02 PHP
PHP多文件上传类实例
2015/03/07 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
JavaScript获取按钮所在form表单id的方法
2015/04/02 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
Angularjs 依赖压缩及自定义过滤器写法
2017/02/04 Javascript
使用 jQuery 实现表单验证功能
2017/07/05 jQuery
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
微信小程序如何获取地址
2019/12/24 Javascript
vue实现数据控制视图的原理解析
2020/01/07 Javascript
python 测试实现方法
2008/12/24 Python
Python判断文本中消息重复次数的方法
2016/04/27 Python
vscode 远程调试python的方法
2017/12/01 Python
对Python 语音识别框架详解
2018/12/24 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
python绘制封闭多边形教程
2020/02/18 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
Python中过滤字符串列表的方法
2020/12/22 Python
前端制作动画的几种方式(css3,js)
2016/12/12 HTML / CSS
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
学雷锋月活动总结
2014/04/25 职场文书
广播体操比赛口号
2014/06/10 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
灵能百分百第三季什么时候来?
2022/03/15 日漫