Javascript JS数组破坏-它是如何给出这个输出的?

Javascript JS数组破坏-它是如何给出这个输出的?,javascript,ecmascript-6,destructuring,Javascript,Ecmascript 6,Destructuring,代码的输出: const arr = [1, 2, 3, 4, 5]; console.log([...arr + []]); 给予 我知道…arr将返回数组项(如1 2 3 4 5)和number+[]给出字符串,但我真的搞不清楚为什么,被添加到输出数组中 是因为console.log() 结果是输出相同的[…”1,2,3,4,5”+[]] 还是我不知道的神奇解释?是关于应用于数组的+运算符的解释。那么发生的情况是: arr+[]为您提供一个字符串“1,2,3,4,5” 然后该字符串被扩展/

代码的输出:

const arr = [1, 2, 3, 4, 5];
console.log([...arr + []]);
给予

我知道
…arr
将返回数组项(如1 2 3 4 5)和
number+[]
给出字符串,但我真的搞不清楚为什么
被添加到输出数组中

是因为
console.log()
结果是输出相同的
[…”1,2,3,4,5”+[]]

还是我不知道的神奇解释?

是关于应用于数组的
+
运算符的解释。那么发生的情况是:

  • arr+[]
    为您提供一个字符串
    “1,2,3,4,5”
  • 然后该字符串被扩展/拆分(使用扩展语法)为该字符串的字符数组
  • 是关于应用于数组的
    +
    运算符的说明。那么发生的情况是:

  • arr+[]
    为您提供一个字符串
    “1,2,3,4,5”
  • 然后该字符串被扩展/拆分(使用扩展语法)为该字符串的字符数组

  • 当你这样做的时候,再加上Nurbol的答案

    const arr=[1,2,3,4,5];
    
    log([…arr+[])添加Nurbol的答案时

    const arr=[1,2,3,4,5];
    log([…arr+[])
    array.toString()
    在每个元素后添加

    const a = [1, 2, 3, 4, 5]
    console.log(a.toString())
    // -> '1,2,3,4,5'
    console.log([...a.toString()])
    // -> [ '1', ',', '2', ',', '3', ',', '4', ',', '5' ]
    
    […aray+[]]
    将数组转换为字符串,然后添加空字符串,然后使用
    […resultString]
    生成结果
    数组。toString()
    在每个元素后添加

    const a = [1, 2, 3, 4, 5]
    console.log(a.toString())
    // -> '1,2,3,4,5'
    console.log([...a.toString()])
    // -> [ '1', ',', '2', ',', '3', ',', '4', ',', '5' ]
    

    […aray+[]]
    将数组转换为字符串,然后添加空字符串,然后使用
    […resultString]
    生成结果

    ,因为
    arr+[]==“1,2,3,4,5”
    (这里没有解构)@CertainPerformance您的意思是-这里没有
    数组解构
    。根本没有解构(数组或其他)噢,谢谢你清除了它。“我知道,
    …arr
    将返回数组项”,它不返回。
    不是运算符,它什么都不做。
    …arr
    本身将与
    :arr
    一样无效。
    是数组文字语法的一部分(以及函数定义/调用语法和析构函数语法)并具有不同的含义,具体取决于它的使用位置。就像
    循环头的
    内部和语句末尾的意思不同。请参阅,因为
    arr+[]==“1,2,3,4,5”
    (这里没有析构函数)@当然性能你的意思是-这里没有
    数组解构
    。根本没有解构(数组或其他)哦,谢谢你清除它。“我知道
    …arr
    会返回数组项”它不是。
    ..
    不是运算符,它什么也不做。
    ..arr
    本身与
    :arr
    一样无效。
    ..
    是数组文字语法(函数定义/调用语法和析构函数语法)的一部分根据使用位置的不同,它有不同的含义。就像
    循环头和语句结尾的
    中有不同的含义。请参见。因此,它的行为基本上类似于
    控制台.log([…(arr+[]));
    。Thanks@PrameshBajracharya没错。换句话说,
    +
    运算符在这里具有更高的优先级。@Nurbollypysbayev:
    ..
    不是运算符。是数组文字语法的一部分,就像
    一样。@FelixKling所以这是一个常见的误解?用谷歌搜索“扩展运算符”提供了大量的链接。但是developer.mozilla.org没有提到它。不幸的是,是的。在开始时,MDN在操作符下列出了这种语法。请参见tooOh。因此,它的行为基本上类似于
    console.log([…(arr+[]));
    。Thanks@PrameshBajracharya没错。换句话说,
    +
    运算符在这里具有更高的优先级。@Nurbollypysbayev:
    ..
    不是运算符。是数组文字语法的一部分,就像
    一样。@FelixKling所以这是一个常见的误解?用谷歌搜索“扩展运算符”提供了大量的链接。但是developer.mozilla.org没有提到它。不幸的是,是的。在开始时,MDN在操作符下列出了这种语法。参见