js代码,三个点扩展运算符如何解包数据array/object/string?
发布于 作者:苏南大叔 来源:程序如此灵动~

本文基于js
来说明一下三个点扩展运算符的用法,在很多编程语言中,都有这个三个点运算符,大体的用途都是用于解包一些数据。在具体的实际操作中,总还是会有一些出乎意料的事情发生的。如果您也有兴趣,可以随着苏南大叔的思路,来看看三个点的具体用法。

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文描述三个点运算符的故事。测试环境:node@16.14.2
。理论上浏览器环境下也是可以运行的,不过具体没实验。
解包用法
基本用法就是用于数据的解包,比如对array
、object
、string
的解包操作。

合并用法
这里其实还可以把这个解包操作,变成合并数据的操作目的,这个时候就有一些不合常规的操作了。
合并数组array
数组array合并,数组元素之间并不相互覆盖。

合并对象object
对象object
合并,同key
的object
属性,会产生覆盖关系。而且是那种简单的覆盖,并不考虑深度的元素覆盖(合并)。

赋值变量
可以把解包的数据赋值给新的变量,但是带三个点的变量位置是有特殊规定的,需要放置在最后面。如果是解包个数组或者字符串的话,那么变量的名字是可以随便写的。

但是,如果解包的是个对象的话,那么变量名字和属性名称必须对应,否则提取不到数据,会得到一个undefined
。并且,只要注意变量的名字需要对应外,名字的顺序是无所谓的,(当然带三个点的变量一定要放在最后,并且叫啥都行)。
注意写法,{}
而不是[]
。

函数的参数赋值
这里也分为两种情况,一种是函数定义的时候使用三个点,一种是函数调用的时候使用三个点。
函数定义使用三个点
在定义函数的时候使用三个点,这个和传入了一个数组操作是一样的。

函数调用使用三个点
f.apply(null, args) 这是一个新的写法。

切断引用关系
测试代码:

虽然把一个数组解包再封包,和原来没有啥区别。但是,切断了js
默认自带的引用关系,是一个完全独立的变量了。对原变量的修改,并不会影响到第二个变量。下面的代码同理:

相关链接
- https://newsn.net/say/python-zip.html
- https://newsn.net/say/php-phar-extract.html
- https://newsn.net/say/electron-asar.html
总结
更多经验文章,请点击下面的链接:


