arguments: 函数自带的一个变量, 其存储了函数收到的所有实参;
废话不多说直接上代码:
function show(x, y){
console.log(x, y);
// 保存所有收到的实参
console.log(arguments);
}
show(10, 20, 30, 40, 50, 60)
接下来让我们来看看arguments对象里面到底有些什么东西:
通过打印结果来看, 六个参数以数组的形式保存在里面, 还有保存了我传入函数的实参的个数(length), x对应的就是下标为0的实参, 而y对应的就是下标为1的实参, 那形参里面只有两个值来接收, 其它的值其实都存储在arguments里面.
那arguments有什么用途呢?
用途就是制作接收的参数数量不固定的函数
来看下方这个例子:
function sum(){
console.log(arguments);
var t = 0
for(var i = 0; i<arguments.length;i++){
var num = arguments[i]
t += num
}
return t
}
console.log(sum(12, 21, 32, 43));
console.log(sum(12, 21, 32, 43, 32, 4, 65));
console.log(sum(12, 21, 32, 43, 33));
制作 sum 函数, 求出任意数量个参数的总和来实现实参个数不固定的函数
下面我们用console.log的方式,将arguments对象输出到控制台
这里我们可以看到有了这个对象我们以后写函数的时候,就不用给所有的形参指定参数名,然后通过参数名的方式获取参数了,我们可以直接使用arguments对象来获取实参,这样是不是方便了很多呢。
函数重载
函数重载: 函数根据参数的 个数 或 类型, 来加载不同的算法逻辑; 实现多功能函数
这个地方也没什么好说的, 下方直接上代码:
function zhekou(money){
// 如果实参是3个, 就说明是满减
if(arguments.length == 3){
var man = arguments[1]
var jian = arguments[2]
// 如果消费金额 大于等于 满减的要求,则金额减
if(money >= man) money -= jian
return money
}
// 两个参数
if(arguments.length == 2){
if(typeof arguments[1]=='number'){
return money * arguments[1]
}
if(typeof arguments[1]=='string'){
if(arguments[1] == 'vip1') return money * 0.9
if(arguments[1] == 'vip6') return money * 0.6
}
}
}
// 为 双12 制作计算折扣信息的函数
// 1. 直接打折
console.log(zhekou(5000, 0.6)); // 5000元 6折
console.log(zhekou(5000, 0.5)); // 5000元 5折
// 2. 满减
console.log(zhekou(5000, 3000, 600)); //满3000 - 600
console.log(zhekou(5000, 4000, 800)); //满4000 - 800
// 3. vip等级
console.log(zhekou(5000, 'vip1')); // 9折
console.log(zhekou(5000, 'vip6')); // 6折
最近也是快到双12了, 我们来简单的做一个打折的这么一个逻辑, 上方代码也是通过对于实参个数不同来做判断条件, 也是有一点的逻辑性的, 不知道你是否能看得懂呢?
我们通过console.log的方式输出到控制台来看一下
也是完全没问题的
今天就到这里了, 如果有看不懂的小伙伴欢迎后台踢我!