形参:形式参数,是函数作用域内的变量。
实参:调用函数时,传入的参数,有对应的形参时,实参会赋值给形参。
案例:
var MyF = function(a){} //a为形参
MyF(1) //1为实参
在javascript中的函数中,有如下一些规则:
1.实参传入个数和形参设置数量都是自定义的。实参传多或者传少都是允许的,实参不是非必传,形参也不是非必设,原理和变量的定义和赋值一样。
2.形参可以设置默认值,当有对应实参赋值的时候,默认值一般会被实参替换。若形参设置了不为undefined的默认值,传入对应实参为undefined时,形参不会被实参替换。
3.形参和实参是根据位置对应赋值。
案例:
var fOne = function (a,b){
console.log(a)//1
console.log(b)//undefined
}
fOne(1)
var fTwo = function (a,b,c){
console.log(a) //1
console.log(b) //2
console.log(c) //3
}
fTwo(1,2,3,4)
var fThr = function(a=1,b=2,c=3,d){
console.log(a) //1
console.log(b) //3
console.log(c) //3
console.log(d) //undefined
}
fThr(undefined,3)
arguments对象
arguments对象是每一个函数内部都有的对象,以数组的形参呈现,该对象保存了函数传入的实参和其他的方法和原型链。该对象一般用于获取函数的实参。
案例:
var fOne = function(){
var arr = []
for(var i = 0;i < arguments.length; i++){
arr.push(arguments[i])
}
console.log(arr) //[1, 2, undefined]
}
fOne(1,2,undefined)
var fTwo = function(a=1,b=2,c){
var arr = []
for(var i = 0;i < arguments.length; i++){
arr.push(arguments[i])
}
console.log(arr) // [undefined, 3]
}
fTwo(undefined,3)
获取形参长度
函数名.length的形式可以查看和获取形参的长度。
var mFc = function (){}
console.log(mFc.length) //0
var mFc1 = function (a,b){}
console.log(mFc1.length) //2