为什么散布运算符将我的数组变成数字

时间:2019-09-26 21:56:30

标签: javascript arrays operators arr spread

我有

list.count

我怎么写

a = [[1,2,3],[4,5,6]] 它给了我console.log(...a.shift()) 但不是1 2 3也不是1,2,3 谁能解释一下这背后的机制?

2 个答案:

答案 0 :(得分:2)

a.shift()返回数组的第一个元素,即[1, 2, 3]。因此,您的代码等效于:

console.log(...[1, 2, 3])

spread语法使数组的每个元素成为一个单独的参数,因此等效于

console.log(1, 2, 3)

它将在控制台上分别打印每个数字。

要获取[1, 2, 3],您不应该使用...,只需写

console.log(a.shift())

要使用1,2,3,请

console.log(a.shift().join(','))

答案 1 :(得分:0)

console.log(...a.shift())

以给定的顺序运行:

  1. a.shift()返回[1, 2, 3] => console.log(...[1, 2, 3])
  2. ...[1, 2, 3]被评估为1 2 3并作为3个不同的参数传递给console.log => console.log(1, 2, 3)

1 2 3中的哪个不存在