函数的参数

函数的参数有实参和形参
形参可以当作局部变量
本质上是将实参赋值给形参
传递对象时,相当于obj=person,引用类型赋值的是地址,保存在堆内存中,指向同一个对象,person对多一个name

var person = {};
function setPerson(obj) {//形参
	obj.name = 'xm';
}
setPerson(person);//实参
参数的个数

1.当实参==形参的个数,分别对应依次的

function add(num1, num2) {
 	return num1 + num2;
}
add(1, 2);

2.实参个数<形参个数
例如add(1),第一个数num1=1,第二个数num2=undefined
只有当我们的参数是可选参数,即选择性的传,不传的话可以不传。
像数学上的底数和幂数,当幂为2时选择性的不传
输出:9 27

function pow(base, power) {//base底数 power幂数
 	// if (!power) power = 2;//如果不存在给默认值2
 	power = power || 2;
 	return Math.pow(base, power);
}
console.log(pow(3));
console.log(pow(3, 3));

3.实参个数>形参个数
当我们有时候传参的时候传多了,可以使用arguments,用来保存实参的数组,如果长度为0则直接返回掉,显示未定义。

function add() {
	if (arguments.length == 0) return;var sum = 0;
	for (var i = 0; i < arguments.length; i++) {
		sum += arguments[i];
	}
	return sum;
}
console.log(add());//undefined
console.log(add(1, 2, 3, 4, 5));//15

编写一个比较数字大小的函数min,它可以接收任意参数的函数,完成比较[2,4,1,-1,56,3,-7]中数字的大小,并用apply方法将参数一次性传递进去,并输出。

   function min(){
		var mins = arguments[0];
		for(var i=0;i<arguments.length;i++){
			if(mins>arguments[i]){
				mins=arguments[i];
			}
		}
		return mins;
	}
	var arr = new Array(2,4,1,-1,56,3,-7);
	console.log(min.apply(window,arr));
arguments

arguments是一个类数组,不能够使用arguments.push();
不建议使用arguments[]来改变值

function fn(name) {
	arguments[0] = '';
	console.log(name);
}
fn('xm');//显示空串

arguments.callee指函数本身,一般用于递归,但是在严格模式下不允许使用,会出现报错

function jiecheng(num) {
	if (num <= 1) return 1;
	return num * arguments.callee(num - 1);//调用阶乘
}
console.log(jiecheng(5));
console.log(jiecheng(4));

判断实参和形参个数是否一致,形参的个数为add.length

function add(num1, num2) {
	if (arguments.length != add.length) throw new Error('请传入' + add.length + '个参数!');
	return num1 + num2;
}
console.log(add(1, 1));//2
console.log(add(1));//error
console.log(add(1, 2, 3));//error
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值