抽象轻松JavaScript

展开语法定义: 在函数调用/数组构造时,以数组的形式展开使用

语法公式:...element(元素)

别看短短的一句话,这个可是展开语法最为核心,因为越简单的越难,简单中包含着难!

第一部分:函数的调用

    function name(...vars){
        console.table(vars);
    }
    name(1,"秋刀鱼",{name : "亚尔"},[1,2,3],);//实数,字符串,对象,数组

来看看,展开语法在函数的调用中起到了什么作用!

先看看没有使用展开函数

只输出了一个,那么我想多次输出怎么办(在不适用展开语法)

第一种多次调用,第二种以数组的形式写入值

    function name(vars){
        console.table(vars);
    }
    name([1,2,3]);

疑问一:丫的,你这个是表格输出,而且表格输出是一个专门针对数组的!用数组肯定是对的

回答:前面也是用表格,在调用函数时既没有使用展开语法,也没有使用数组,他返回的值是1

疑问二:我想要针对值的使用呢?

回答:数组你怎么选值的?根据下标,那么这个问题就解决了!

简单的进阶
    function name (...arrs){
        for(let i = 0 ; i < arrs.length ; i++)
        {
            let arr = arrs[i];
            if(arr > 3)
            console.log("对了");
            else
            console.log("错了");
        }
    }
    name(1,2,3,4,5,6);

先不运行,用理论来思考,第一步,函数的调用在展开语法下变成了数组!arrs用来存储数组

第二步,第一次进入循环,i == 0,满足条件,进入循环体,arr变量 = arrs [i]的值

其实在这里可以进一步优化,直接用arrs[i]的值进行判断,没必要像我一样用一个变量来存储

第三步,进入判断语句,数组arrs下标为0的值是1,不满条件大于3,所以输出错了

重复6次,问为什么是6次,arrs.length为6,为什么arrs.length为6,因为展开语法把调用函数的值以数组的形式展开,总共就会有三个对与三个错

 小结

展开语法,优化调用函数的值

数组构造时

数组构造有两种方法:一种为字面量,一种为构造函数

let arr = [];//字面量
let arr = new Array();//构造函数,区别之前说了

在直接使用展开语法时,和调用没有区别,就是把数组展开没了!

这是在直接使用时,前面说过用方法添加开头结尾,现在有了展开语法就不需要用方法来添加了

    let i = ["秋刀鱼","鱼","鲨鱼"];
    console.table(i.push("鱼"));
    console.log(i);//传统方法
    console.log("海域",...i,"鱼","鲨鱼","haiyu");//展开语法

 那么可以用在随心添加呢?很显然,不能,因为展开语法是三个。。。还是只能用splice()

注意,这个和切片slice()方法不一样,我就经常记错。。。

总结

展开函数的本质是数组类型的转换,把调用函数的值转换成数(组)字更好控制

用展开语法会更好的添加元素,不像哪些方法,返回的值还不是原本数组,例如上面那个在末尾添加下标元素,返回的值是4,这个意思是下标为4的元素的下标

展开语法,就是为了更好控制元素,因为这是数组的优势,为什么本质上是数组类型的转换!

//那么到现在数组类型的转换已经不下7种方法了//

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值