理解JavaScript中参数传递的特性 —第3.7.1节

1:首先要明白ecmascript函数的参数特点?

与大多数语言不一样的是,JavaScript的函数不介意传递多少个参数。 此话怎讲呢? 加入你的自定义函数只接受两个参数,但是,在调用这个参数的时候未必一定要传递两个参数,可以是0,1,2,3.....等任意个,而且解析器不会报错!

2:但是,为什么呢?

原理我也希望大家明白:ECMAScript中的参数内部是一个数组来表示的。函数接收的都是这个数组,如果这个数组不包含任何元素,也无所谓。实际上,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。

例如:我们通过arguments对象来查看你往定义的函数里面传了多少参数,顺便看一下arguments对象是什么?

function did(){
	console.log(arguments)
	console.log(arguments.length);
}
did();
did('bangbang');
did('bangbang','18');
在控制台输出:



由此可见,在JavaScript中,我们可以向函数传递任意参数,他都不会报错,而且,它将参数存放在arguments对象中供我们查看。

因此,我们在开发过程中就会很容易使用JavaScript的函数,定他分别接入0,1,2,3等数据的时候,分别实现不同的功能。请看

以下的例子:

function doAdd(){
	if(arguments.length == 1){
		console.log('我有'+arguments.length+'个参数');
	}else if(arguments.length ==2){
		console.log('我有'+arguments.length+'个参数');
	}else{
		console.log('我不想数了!');
	}
}
doAdd();
doAdd(111);
doAdd(1,2);
doAdd(1,2,5);
执行后结果为:



2:最后,给大家总结一句很重要的话:arguments的长度是由传入的参数个数决定的,不是由定义函数时的命名参数个数决定的,请看代码:

function doAdd1(num1,num2){
	arguments[1] = 10;
	console.log(arguments[0] + num2);
}
doAdd1();   //NaN
doAdd1(1);	//NaN
doAdd1(1,5);	//11






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值