当前位置: 首页 » 代码 » javascript » Javascript函数详解2——函数的参数

Javascript函数详解2——函数的参数

发布时间:2017-04-10

javascript 代码

热度:50

在定义一个函数的同时,我们往往会设置该函数所需的调用参数(arguments)。当然,你也可以不用给它设定参数。

举例如下:

//无参函数
function sayHi(){
	return "Hello";
}

//有参函数
function sum(a,b){
	var c=a+b;
	return c;
}

当我们给函数设定了固定个数的参数,但是如果我们才调用时忘记传递相关的值,或者多传递了几个值,会怎样呢?

1.少传递了参数值的情况

调用上面的sum函数,假如我们只传递一个值。示例如下:

var result=sum(1);
console.log(result);	//NaN

输出结果显示NaN。因为我们在调用时忘了传递相关的参数值,javascript引擎就会自动将少传的参数设定为undefined

如上的调用中,我们实际上是试图将1与undefined相加,结果必然是NaN。

2.多传递了参数值的情况

还是调用上面的sum函数,加入我们传递多个值。示例如下:

var result=sum(1,2,3,4);
console.log(result);	//3

输出结果为3。因为javascript的函数,对于传递进来的参数是来者不拒的。所以,即便我们传递的参数过多,多余的那部分也只会别忽略掉

3.arguments对象

在实际的开发过程中,在函数体内,我们可以通过arguments对象来访问偿还体给这个函数的参数数组,arguments对象只是与数组类似(但它并不是Array的实例),因为为可以使用方括号语法访问它的每一个元素,使用length属性来确定传递进来多少个参数。

示例如下:

function args(){
	return arguments;
}

console.log(args(1,2,'hello',true)) ;
console.log(args(1,2,'hello',true).length) ;

输出结果:

通过arguments对象,我们可以进一步完善sum()函数的功能,使之能对任意数量的参数执行求和运算。代码如下:

function sumOnSterodis() {
	var i, res = 0;
	var number_of_params = arguments.length;
	for(i = 0; i < number_of_params; i++) {
		res += arguments[i];
	}
	return res;
}

console.log(sumOnSterodis(1,1,1));			//3

console.log(sumOnSterodis(1,2,3,4));		//10

console.log(sumOnSterodis(1,2,3,4,4,3,2,1));		//20

去顶部