function a(x,y){return x+y};
调用a(20,30)
形参指的是函数定义的参数,也就是x和y。实参是指传入的参数也就是20和30
1,可选形参
a) 函数声明为两个形参function a(x,y){},但是调用时可能之传入a(1),第二个被忽略的参数将被传入undefined。
b) 注意:在参数可选时,在函数里注意判断是否为undefined。
2,可变长的实参列表
a) 如果实参的长度大于形参,可以用arguments得到所有的实参。否则多余的实参会被忽略掉。
arguments是实参对象,可以像数组一样通过下标取到所有的实参,例如:(取最大值)
function max(/*....*/){
var max=Number.NEGATIVE_INFINITY;//表示负无穷
for(var i=0;i<arguments.length;i++)
if(arguments[i]>max){max=arguments[i]}
return max
}
var ma=max(12,2222,14,454,633) //返回值为2222
3,对象属性作为实参(在形参比较多时)
也就是把要传递的参数以键值对的形式封装成对象,需要用时直接传递对象。
4, 可以把函数作为参数
a,函数可以赋值给另一个函数 例如:
function square(x){return x*x}
var s=square; //现在s和square指向同一个函数
suqare(4); //16
s(4) //16
b, 函数作为参数
function add(x,y){return x+y}
function subtract(x,y){return x-y}
function op(opt1,opt2,opt3){//opt1传入一个函数
return opt1(opt2,opt3)
}
调用:op(add,2,3) //相当于add(2+3)
op(add,op(add,2,3),op(subtract,2,3)) //相当于(2+3)+(2-3)