Javascript 为什么扩展运算符将我的数组转换为数字

Javascript 为什么扩展运算符将我的数组转换为数字,javascript,arrays,operators,arr,spread,Javascript,Arrays,Operators,Arr,Spread,我有 a=[[1,2,3],[4,5,6]] 为什么当我写作的时候 console.log(…a.shift()) 它给了我123 但不是1,2,3也不是[1,2,3] 有人能解释一下这背后的机制吗?a.shift()返回数组的第一个元素,即[1,2,3]。因此,您的代码相当于: console.log(...[1, 2, 3]) 扩展语法使数组的每个元素成为一个单独的参数,因此这相当于 console.log(1, 2, 3) 在控制台上分别打印每个号码 要获得[1,2,3]您不应该使用.

我有

a=[[1,2,3],[4,5,6]]

为什么当我写作的时候

console.log(…a.shift())
它给了我
123
但不是
1,2,3
也不是
[1,2,3]
有人能解释一下这背后的机制吗?

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

console.log(...[1, 2, 3])
扩展语法使数组的每个元素成为一个单独的参数,因此这相当于

console.log(1, 2, 3)
在控制台上分别打印每个号码

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

console.log(a.shift())
要获得
1,2,3
,请使用

console.log(a.shift().join(','))
a.shift()
返回数组的第一个元素,即
[1,2,3]
。因此,您的代码相当于:

console.log(...[1, 2, 3])
扩展语法使数组的每个元素成为一个单独的参数,因此这相当于

console.log(1, 2, 3)
在控制台上分别打印每个号码

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

console.log(a.shift())
要获得
1,2,3
,请使用

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

按给定顺序运行:

  • a.shift()
    返回
    [1,2,3]
    =>
    console.log(…[1,2,3])
  • ..[1,2,3]
    被计算为
    1,2,3
    并作为3个不同的参数传递到console.log=>
    console.log(1,2,3)
  • 其中有超出
    1 2 3的
    console.log(…a.shift())

    按给定顺序运行:

  • a.shift()
    返回
    [1,2,3]
    =>
    console.log(…[1,2,3])
  • ..[1,2,3]
    被计算为
    1,2,3
    并作为3个不同的参数传递到console.log=>
    console.log(1,2,3)

  • 在你调用的
    console.log(…[1,2,3])
    中,有一个与调用
    console.log(1,2,3)
    相同的
    1,2,3
    对,但是为什么它会把数组变成数字呢?有一种方法类似于
    控制台.log([1,2,3].join(“”)
    我知道如果我使用
    .join
    ,它会变成字符串,这就是为什么我对扩展运算符下面的机制很好奇。请解释为什么你期望
    1,2,3
    [1,2,3]
    。扩展语法只会导致
    console.log
    接收多个参数,数组的每个元素一个参数(不管它们是否是数字)。它是
    console.log
    选择在它们之间加空格来显示它们,它可以做其他任何事情。您正在调用
    console.log(…[1,2,3])
    ,这与调用
    console.log(1,2,3)
    相同,但为什么它会将数组变成数字呢?有一种方法类似于
    控制台.log([1,2,3].join(“”)
    我知道如果我使用
    .join
    ,它会变成字符串,这就是为什么我对扩展运算符下面的机制很好奇。请解释为什么你期望
    1,2,3
    [1,2,3]
    。扩展语法只会导致
    console.log
    接收多个参数,数组的每个元素一个参数(不管它们是否是数字)。它是
    控制台。log
    可以选择在它们之间加空格来显示它们,它可以做其他任何事情。“
    …[1,2,3]
    被评估为
    1,2,3
    ”-不清楚您所说的
    1,2,3
    是什么意思。这应该代表一个字符串吗?还有别的吗?不是绳子。它被计算为三个整数值(可以这么说),也可以这么说,不。
    ..
    不是一个运算符,它根本不计算任何东西-它只是函数调用语法的一部分。
    ..[1,2,3]
    被计算为
    1,2,3
    ”-不清楚你所说的
    1,2,3
    是什么意思。这应该代表一个字符串吗?还有别的吗?不是绳子。它被计算为三个整数值(可以这么说),也可以这么说,不是。
    不是一个运算符,它根本不计算任何值-它只是函数调用语法的一部分。