标签:
Function对象
js中一切都是对象,函数也是对象,函数名是引用函数定义对的变量。
1.函数的定义
1 //函数定义的三种方法 2 //声明方式 3 function sum(x,y){ 4 return x+y; 5 } 6 sum(1,2);//调用sum函数,求和 7 //函数名和函数定义都被提前,在调用前后位置定义都行 8 9 //函数直接量 10 var sum = function(x,y){ 11 return x+y; 12 } 13 sum(1,2);//调用sum函数,求和 14 //仅函数名声明变量会提前,函数定义留在本地,必须定义在调用前 15 16 //使用new创建函数类型对象 17 var sum = new Function("x","y","return x+y");
2.匿名函数
定义时,不指定函数名的函数
/* 匿名函数自调: 定义完,立即执行,执行完立即释放 只有确定函数只执行一次时使用 */ (function(x,y){alert(x*y)})(2,3); var tens = (function(x) {return x*x}(10)); //自调:定义在哪,就在哪执行,不提前 /* 匿名函数回调 将函数作为队象传递给另一个函数,由另一个函数自主决定在需要时调用 */ var arr=[1,12,123,3,2,23]; arr.sort(function(a,b){return a-b;});//比较器函数回调 console.log(arr);
3.arguments对象
标识符arguments是指向拾参对象的引用,实参对象是一个类数组对象。每个实参对象都包含以数字为索引的一组元素以及length属性,但它毕竟不是真正的数组。
js语法不支持重载,但可用arguments对象模拟重载效果。
arguments[i] 获得传入的下标为i的的参数值
arguments.length 获得传入参数的个数
1 function calc( ){ 2 //如果用户传入一个参数,求平方 3 if(arguments.length==1){ 4 alert(arguments[0]*arguments[0]); 5 }else if(arguments.length==2){ 6 //如果用户传入两个参数,就求和 7 alert(arguments[0]+arguments[1]); 8 } 9 } 10 calc(4); //16 11 calc(4,5); //9 12 /*无论用户传入几个数字,都可以求和*/ 13 function add(){ 14 //遍历arguments中每个元素,并累加 15 for(var i=0,sum=0;i<arguments.length;sum+=arguments[i++]); 16 return sum;//返回和 17 } 18 19 alert(add(1,2,3)); //6 20 alert(add(1,2,3,4,5,6)); //21
即使定义了参数变量,arguments对象同样会收到所有参数值
标签:
原文地址:http://www.cnblogs.com/Medeor/p/4889928.html