【Es6入门实践】04为什么要用对象展开运算符和rest运算符

1.对象展开运算符

假设我们知道一个对象里面有方法,但是不知道方法里面的参数情况

function hls(...arg){
  console.log(arg[0])
  console.log(arg[1])
  console.log(arg[2])
  console.log(arg[3])
}
hls(1,2,3,4,5,6)

所以我们可以利用对象展开运算符查看参数
在这里插入图片描述
下面我们看一个例子:

let arr1=["123","456","789"]
let arr2=arr1 //arr1的内存空间映射到了arr2
console.log(arr2)
arr2.push("110")
console.log(arr1)

在这里插入图片描述
我们会发现,arr2的修改影响到了arr1,这不是我们要的结果

接着我们使用对象展开运算符

let arr1=["123","456","789"]
let arr2=[...arr1]
console.log(arr2)
arr2.push("110")
console.log(arr2)
console.log(arr1)

在这里插入图片描述
我们发现,arr2的修改不会影响到arr1

记住:

  • 我们这里赋值的是里面的每一个值
  • 它相当于里面的每一个元素
  • 只要有…,就是里面的元素,而不是我们的arr对象

说明了arr2的修改不会影响到arr1,这解决了业务逻辑上的error

接下来我们看看rest运算符

2.rest运算符

rest:剩余部分的意识

也就是通过这个运算符,我们可以得知剩余参数的情况,比如剩余参数的个数,剩余参数是什么

我们先来看看剩余参数的个数

扫描二维码关注公众号,回复: 9955415 查看本文章
function hello(first,...args){
  console.log(args.length)
}
hello(1,2,3,4,5,6,7,8)

在这里插入图片描述
第一个参数first是确定的,后面不确定的,我们通过剩余运算符可以发现,还剩下7个。

如果我们不止要查个数,我们要查参数具体是什么,那么我们可以使用for循环,遍历输出一下。

function hello(first,...args){
  for(let i = 0; i < args.length; i++){
    console.log(args[i])
  }
}
hello(1,2,3,4,5,6,7,8)

在这里插入图片描述
上面的for循环里面,虽然我们使用了let,但是我们同时也为i开辟了空间,这会影响到内存和效率,于是,我们可以使用let of来对代码进行改进。

function hello(first,...args){
  for(let val of args){
    console.log(val)
  }
}
hello(1,2,3,4,5,6,7,8)

它的输出结果和前面是一样的

发布了227 篇原创文章 · 获赞 41 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42554191/article/details/104494909
今日推荐