javascript函数function学习【javascript高级程序设计】
2011-10-23 09:31
375 查看
function语法:
/*
ECMAScript 使用function关键字来声明,后跟一组参数及函数体。基本语法如下:
function functionName(arg0,arg1,arg2,...argN){
statements
}
*/
/*return语句也可以不带任何返回值。这种情况下,函数在停止执行后将返回undefined值。
这种用法一般用在需要提前停止函数执行而又不需要返回值的情况下。
*/
//比如下面这个例子中,就不会显示警示框。
对function参数的理解:
/*
对function参数的理解:
ECMAScript函数的参数与大多数其他语言中函数参数有所不同。ECMAScript函数不介意传递进来多少个参数,也不介意传进来参数是什么数据类型。
也就是说,即便你定义的函数只接受两个参数,在调用这个函数时也未必一定要传递两个参数。可以传递一个、三个甚至不传递参数,而解析器永远不会有什么怨言。
原因:
之所以会这样,原因是ECMAScript中的参数在内部是用一个数组来表示的。函数接受的始终都是这个数组,而不关心数组中包含哪些参数(如果有参数的话)。
如果这个数组中不包含任何元素,无所谓;如果多包涵多个元素,也没有问题。
实际上,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。
其实,arguments对象只是与数组函数类似(他并不是Array的实例),因为可以使用方括号语法访问它的
每一个元素(arguments[0]、arguments[1]、... ... arguments
),使用length属性来确定传递进来多少个参数。
*/
//另一个与参数相关的重要方面,就是arguments对象可以与命名参数一起使用,如下面例子所示:
//ECMAScript没有重载,如果定义两个名字相同的函数,则改名字是属于后定义的函数。请看示例:
/*
ECMAScript 使用function关键字来声明,后跟一组参数及函数体。基本语法如下:
function functionName(arg0,arg1,arg2,...argN){
statements
}
*/
/* function sayHi(name,message){ alert("Hello "+name+","+message); } //通过函数名传参调用 sayHi("tom","how are you today?");//result:Hello tom,how are you today? */ /* function sum(num1,num2){ return num1+num2; } var result = sum(5,10); alert(result); */ /* function sum(num1,num2){ return num1+num2; alert(num1+num2);//永远不会执行 } */ /* function diff(num1,num2){ if(num1>num2){ return num1-num2; }else{ return num2-num1; } } var result = diff(5,9); alert(result); */
/*return语句也可以不带任何返回值。这种情况下,函数在停止执行后将返回undefined值。
这种用法一般用在需要提前停止函数执行而又不需要返回值的情况下。
*/
//比如下面这个例子中,就不会显示警示框。
/* function sayHi(name,message){ return; alert("Hello "+name+","+message); } *///推荐的做法是要么让函数始终都返回一个值,要么永远都不要返回值。否则,如果函数有时候返回值,有时候不返回值,会给调试代码带来不便。
对function参数的理解:
/*
对function参数的理解:
ECMAScript函数的参数与大多数其他语言中函数参数有所不同。ECMAScript函数不介意传递进来多少个参数,也不介意传进来参数是什么数据类型。
也就是说,即便你定义的函数只接受两个参数,在调用这个函数时也未必一定要传递两个参数。可以传递一个、三个甚至不传递参数,而解析器永远不会有什么怨言。
原因:
之所以会这样,原因是ECMAScript中的参数在内部是用一个数组来表示的。函数接受的始终都是这个数组,而不关心数组中包含哪些参数(如果有参数的话)。
如果这个数组中不包含任何元素,无所谓;如果多包涵多个元素,也没有问题。
实际上,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。
其实,arguments对象只是与数组函数类似(他并不是Array的实例),因为可以使用方括号语法访问它的
每一个元素(arguments[0]、arguments[1]、... ... arguments
),使用length属性来确定传递进来多少个参数。
*/
//因此可以对上面的sayHi()函数进行重写: /* function sayHi(){ alert("Hello "+arguments[0]+","+arguments[1]); } sayHi("tom","how are you today?"); */ /* function howManyArgs(){ alert(arguments.length); } howManyArgs("string",45);//2 howManyArgs();//0 howManyArgs(14);//1 */ /* function doAdd(){ if(arguments.length==1){ alert(arguments[0]+10); }else if(arguments.length==2){ alert(arguments[0]+arguments[1]); } } doAdd(10); doAdd(20,30); */
//另一个与参数相关的重要方面,就是arguments对象可以与命名参数一起使用,如下面例子所示:
/* function doAdd(num1,num2){ if(arguments.length==1) { alert(num1+10); } else if(arguments.length==2) { alert(arguments[0]+num2); } } doAdd(10);//20 doAdd(30,20);//50 */
//ECMAScript没有重载,如果定义两个名字相同的函数,则改名字是属于后定义的函数。请看示例:
function addSomeNumber(num){ return num+100; } function addSomeNumber(num){ return num+200; } var result=addSomeNumber(100);//300 alert(result);
相关文章推荐
- JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
- JavaScript高级程序设计 学习笔记 js高级技巧
- JavaScript高级程序设计学习(四)之引用类型
- 《JavaScript高级程序设计 第三版》学习笔记 (五) 继承详解
- JavaScript高级程序设计 学习笔记 js高级技巧
- js-JavaScript高级程序设计学习笔记6
- javaScript高级程序设计学习(三)
- JavaScript高级程序设计 XML、Ajax 学习笔记
- JavaScript高级程序设计学习总结四(JavaScript引用类型二)
- JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
- JavaScript高级程序设计学习(六)之设计模式
- JavaScript高级程序设计---学习笔记(一)
- JavaScript高级程序设计 第3章 学习笔记
- JavaScript高级程序设计(第3版)学习笔记14——浏览器对象模型BOM
- JavaScript高级程序设计(第三版)---学习笔记一
- javascript高级程序设计学习笔记二
- JavaScript高级程序设计学习笔记3: Math对象比较常用的几个方法
- JavaScript高级程序设计(第三版)学习笔记1~5章
- <JavaScript高级程序设计>笔记一: 函数function
- JavaScript高级程序设计 客户端存储学习笔记