JS中的arguments、函数重载

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的方式输出到控制台来看一下

也是完全没问题的

今天就到这里了, 如果有看不懂的小伙伴欢迎后台踢我!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值