《javascript高级程序设计》学习笔记(三):javascript 函数一些特性
2008-05-08 20:20
423 查看
这里只记录下javascript函数的一些特性。关于对象,模拟类会在以后的笔记中记录
1.javascript函数无重载。
js不支持重载,后面函数会覆盖前面函数。它不支持重载的特点不免让人感到意外。
2.arguments对象
js不支持重载,不代表我们不能实现重载。程序员的智慧是无穷的!让我们借助arguments对
象来实现函数重载吧!arguments.length表示参数个数
function sayHi(){
if(arguments.length == 1){
if(typeof(arguments[0])=="string"){
alert("do method 1");
}else{
alert("do method 2");
}
}else if(arguments.length == 2){
alert("do method 3");
}
}
sayHi("hehe");
sayHi(1);
sayHi("傻笑",100)
3.Function 类
可以使用Function类直接创建函数:
var function_name = new Function(arg1,arg2,...argN,function_body);
例如:
var sayHi = new Function("sName","sMessage","alert(sName+','+sMessage);");
sayHi("wangping","ww");
注意:最好不要使用Function类创建函数,因为----慢!
4.由于函数名只是指向函数的变量,所以可以把函数作为参数传递给另外一个参数。
function callFun1(fnFun1,vArg){
fnFun1(vArg);
}
function doAdd(iNum){
alert(iNum+10);
}
callFun1(doAdd,10);
5.由于函数是引用类型,所以它们也有属性和方法名。
function_name.length 返回函数名为function_name的函数的参数个数。
function_name.toString() 返回函数名为function_name的函数的源代码(这个调试的时候
很有用)。
function_name.valueOf() 同function_name.toString()
代码:
function doAdd(){
alert(10);
}
alert(doAdd.valueOf());
6.闭包。闭包是javascript最容易让人误解的特点之一。所谓闭包,指词法表示包括不必计算
的变量的函数,通俗地说就是指函数能访问函数外定义的变量:
var iBaseNum =10;
function outerFun(iNum1,iNum2){
function innerFun(){
alert(iNum1+iNum2+iBaseNum)
}
return innerFun();
}
outerFun(1,1);
innerFun可以无需定义参数,得到它外部的函数iNum1,iNum2的参数值以及全局变量iBaseNum
的值。虽然难于想像,但是当你被c#等语言为了互相调用而不停地定义参数搞得抓狂时,你就
看到闭包的好处了。
1.javascript函数无重载。
js不支持重载,后面函数会覆盖前面函数。它不支持重载的特点不免让人感到意外。
2.arguments对象
js不支持重载,不代表我们不能实现重载。程序员的智慧是无穷的!让我们借助arguments对
象来实现函数重载吧!arguments.length表示参数个数
function sayHi(){
if(arguments.length == 1){
if(typeof(arguments[0])=="string"){
alert("do method 1");
}else{
alert("do method 2");
}
}else if(arguments.length == 2){
alert("do method 3");
}
}
sayHi("hehe");
sayHi(1);
sayHi("傻笑",100)
3.Function 类
可以使用Function类直接创建函数:
var function_name = new Function(arg1,arg2,...argN,function_body);
例如:
var sayHi = new Function("sName","sMessage","alert(sName+','+sMessage);");
sayHi("wangping","ww");
注意:最好不要使用Function类创建函数,因为----慢!
4.由于函数名只是指向函数的变量,所以可以把函数作为参数传递给另外一个参数。
function callFun1(fnFun1,vArg){
fnFun1(vArg);
}
function doAdd(iNum){
alert(iNum+10);
}
callFun1(doAdd,10);
5.由于函数是引用类型,所以它们也有属性和方法名。
function_name.length 返回函数名为function_name的函数的参数个数。
function_name.toString() 返回函数名为function_name的函数的源代码(这个调试的时候
很有用)。
function_name.valueOf() 同function_name.toString()
代码:
function doAdd(){
alert(10);
}
alert(doAdd.valueOf());
6.闭包。闭包是javascript最容易让人误解的特点之一。所谓闭包,指词法表示包括不必计算
的变量的函数,通俗地说就是指函数能访问函数外定义的变量:
var iBaseNum =10;
function outerFun(iNum1,iNum2){
function innerFun(){
alert(iNum1+iNum2+iBaseNum)
}
return innerFun();
}
outerFun(1,1);
innerFun可以无需定义参数,得到它外部的函数iNum1,iNum2的参数值以及全局变量iBaseNum
的值。虽然难于想像,但是当你被c#等语言为了互相调用而不停地定义参数搞得抓狂时,你就
看到闭包的好处了。
相关文章推荐
- 《javascript高级程序设计》学习笔记(三):javascript 函数一些特性
- 《javascript高级程序设计》学习笔记(一):javascript 数据类型的一些怪异特性
- 《javascript高级程序设计》学习笔记(一):javascript 数据类型的一些怪异特性
- 《Pro JavaScript Techniques》中的一些函数
- 一些经常会用到的Javascript检测函数
- 深入Python函数编程的一些特性
- 一些JavaScript时间处理函数整理
- 关于fork()函数特性的一些探究
- 原生Javascript写的一些常用的工具函数
- 深入理解javascript的一些特性(静态作用域,this指针,闭包)
- 我自己的Javascript 库,封装了一些常用函数 Kingwell.js
- JavaScript一些函数
- 一些很实用但是JavaScript没有提供的函数
- 一些经常会用到的Javascript检测函数
- 一些很有用的 JavaScript 函数
- javascript 一些实用的函数和建议以及注意
- 一些JavaScript基本函数
- 关于JavaScript中函数的一些技巧
- javascript一些常用函数