[Js] Function、arguments及函数式编程
2006-12-31 14:38
330 查看
参见:
http://www-128.ibm.com/developerworks/cn/web/wa-javascript.html
http://www.knowsky.com/340325.html
arguments是一个类似数组但不是数组的对象,说它类似(仅仅是类似)数组是因为其具有数组一样的访问性质及方式,可以由 arguments
来访问对应的单个参数的值,并拥有数组长度属性length。还有就是arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表(用funcName.length取),而且不能显式创建 arguments 对象。arguments 对象只有函数开始时才可用。
caller
返回一个对函数的引用,该函数调用了当前函数。
functionName.caller
functionName 对象是所执行函数的名称。
说明
对于函数来说,caller 属性只有在函数执行时才有定义。如果函数是由顶层调用的,那么 caller 包含的就是 null 。如果在字符串上下文中使用 caller 属性,那么结果和 functionName.toString 一样,也就是说,显示的是函数的反编译文本。
下面的例子说明了 caller 属性的用法:
// caller demo
}
示例
//callee可以打印其本身
//用于验证参数
//递归计算
比较一般的递归函数:
// 继承的演示
解析:从代码看,该对象仅包含一个方法:Create,其返回一个函数,即类。但这也同时是类的
构造函数,其中调用initialize,而这个方法是在类创建时定义的初始化函数。通过如此途径,
就可以实现prototype中的类创建模式
示例:
var vehicle=Class.create();
var moto=new vehicle("Moto");
moto.showSelf();
下面对 JavaScript 中的函数式风格作一快速总结:
函数并不总是需要名称。
函数可以像其他值一样分配给变量。
函数表达式可以编写并放在括号中,留待以后应用。
函数可以作为参数传递给其他函数。
1,最基础的写函数的风格
function sum(x,y,z) {
return (x+y+z);
}
2,匿名函数
function(x,y,z) {
return (x+y+z);
}
3,函数变量
var sum = function(x,y,z) {
return (x+y+z);
}(1,2,3);
alert(sum);
4,函数表达式
(alert) (“Hello, World!");
5,函数的立即调用
( function(x,y,z) { return (x+y+z) } ) (1, 2, 3);
以上是几种函数的书写风格.另外,声明一个函数还可以用
var func=new function(arg1,arg2,arg3,funcbody);
来进行函数声明.
函数式编程示例:
//动态生成 HTML 的优美代码
//生成动态 HTML 的普通代码
var str=' ';
document.write(str);
//生成动态 HTML 的通用方式
document.write(arr.fold(templateInstance));
//系列函数的应用
//在回调中调用一组函数
//调用系列函数的更好的方式
setTimeout( alertFrst.sequence(alertSec), 5000);
http://www-128.ibm.com/developerworks/cn/web/wa-javascript.html
http://www.knowsky.com/340325.html
arguments是一个类似数组但不是数组的对象,说它类似(仅仅是类似)数组是因为其具有数组一样的访问性质及方式,可以由 arguments
来访问对应的单个参数的值,并拥有数组长度属性length。还有就是arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表(用funcName.length取),而且不能显式创建 arguments 对象。arguments 对象只有函数开始时才可用。
caller
返回一个对函数的引用,该函数调用了当前函数。
functionName.caller
functionName 对象是所执行函数的名称。
说明
对于函数来说,caller 属性只有在函数执行时才有定义。如果函数是由顶层调用的,那么 caller 包含的就是 null 。如果在字符串上下文中使用 caller 属性,那么结果和 functionName.toString 一样,也就是说,显示的是函数的反编译文本。
下面的例子说明了 caller 属性的用法:
// caller demo
}
示例
//callee可以打印其本身
//用于验证参数
//递归计算
比较一般的递归函数:
// 继承的演示
解析:从代码看,该对象仅包含一个方法:Create,其返回一个函数,即类。但这也同时是类的
构造函数,其中调用initialize,而这个方法是在类创建时定义的初始化函数。通过如此途径,
就可以实现prototype中的类创建模式
示例:
var vehicle=Class.create();
var moto=new vehicle("Moto");
moto.showSelf();
下面对 JavaScript 中的函数式风格作一快速总结:
函数并不总是需要名称。
函数可以像其他值一样分配给变量。
函数表达式可以编写并放在括号中,留待以后应用。
函数可以作为参数传递给其他函数。
1,最基础的写函数的风格
function sum(x,y,z) {
return (x+y+z);
}
2,匿名函数
function(x,y,z) {
return (x+y+z);
}
3,函数变量
var sum = function(x,y,z) {
return (x+y+z);
}(1,2,3);
alert(sum);
4,函数表达式
(alert) (“Hello, World!");
5,函数的立即调用
( function(x,y,z) { return (x+y+z) } ) (1, 2, 3);
以上是几种函数的书写风格.另外,声明一个函数还可以用
var func=new function(arg1,arg2,arg3,funcbody);
来进行函数声明.
函数式编程示例:
//动态生成 HTML 的优美代码
//生成动态 HTML 的普通代码
var str=' ';
document.write(str);
//生成动态 HTML 的通用方式
document.write(arr.fold(templateInstance));
//系列函数的应用
//在回调中调用一组函数
//调用系列函数的更好的方式
setTimeout( alertFrst.sequence(alertSec), 5000);
相关文章推荐
- IOS-8-Xcode6 使用MJRefresh报错:Too many arguments to function call, expected 0, have 3
- js参数arguments的理解
- js--arguments与数组
- Too many arguments to function call错误解决方案
- Function 2——JS学习笔记2015-6-30(第71天)
- js 函数报错“Uncaught: TypeError xxx is not a function”
- objc_msgSend()报错Too many arguments to function call ,expected 0,have3
- Js中Prototype、__proto__、Constructor、Object、Function关系介绍总结
- JS函数的参数(arguments)的使用(形参和实参)
- js学习笔记 Function类型属性的理解
- caffe 安装时提示cudnn.hpp(114): too few arguments in function call
- Node.js学习 - Function
- js 立即执行函数,() .则前面的function 是表达式,不能是函数申明
- JS入门之arguments对象
- jquery.form.js关于$("form").ajaxSubmit is not a function原因 .
- 看到的一篇讲js比较好的文章,关于function
- JS监听事件错误:Uncaught TypeError: xx(函数名)is not a function at HTMLInputElement.onclick
- 为什么在jsp页面引入js插件一直报 is not a function
- JS文件中的(function( window, undefined ) {...})( window );详解
- JS Function.caller 和 arguments.callee学习