定义函数
定义方式一
绝对值函数
1 function cl(x){ 2 if (x>=0){ 3 return x; 4 }else{ 5 return -x; 6 } 7 }
一旦执行到return,代表函数结束,返回结果!
如果没有执行return,函数执行完也会返回结果,结果就是undefined!
定义方式二 (匿名函数)
1 var cl=function(x){ 2 if (x>=0){ 3 return x; 4 }else{ 5 return -x; 6 } 7 }
function(x){.......}这是一个匿名函数,但是可以把结果赋值给cl ,通过cl就可以调用函数!
方式一等价于方式二!
调用函数
1 cl(2) //2 2 cl(-2) //2
参数问题:javaScript可以传任意个参数,也可以不传参数~
如果不存在参数,如何规避?
通过手动抛出异常!
1 var cl=function(x){ 2 //手动抛出异常来判断 3 if(typeof x!=='number'){ 4 throw "Not a number!"; 5 } 6 if (x>=0){ 7 return x; 8 }else{ 9 return -x; 10 } 11 }
arguments
arguments是一个JS免费赠送的关键字
代表传递进来的所有参数是一个数组!
1 var cl=function(x){ 2 3 console.log("x=>"+x); 4 5 for (var i=0; i<arguments.length;i++){ 6 console.log(arguments[i]); 7 } 8 9 if(x>=0){ 10 return x; 11 }else{ 12 return -x; 13 } 14 }
问题:arguments包含所有的参数,我们有时候想使用多余的参数来进行附加操作,需要排除已有的参数~
rest
以前:
1 if (arguments.length>2){ 2 for (var i=2;i<arguments.length;i++){ 3 //..... 4 } 5 }
ES6引入新的特性,获取除了已经定义的参数之外的所有参数
1 function haha(a,b,c,...rest){ 2 console.log("a=>"+a); //参数已定义 3 console.log("b=>"+b); //参数已定义 4 console.log(rest); //获取未定义的参数 5 }
rest参数只能写在最后面,必须用 ... 标识。