JS 数组解构 - 它是如何给出这个输出的?
JS Array Destructing - How is it giving this output?
代码输出:
const arr = [1, 2, 3, 4, 5];
console.log([...arr + []]);
给予
[ '1', ',', '2', ',', '3', ',', '4', ',', '5' ]
我知道 ...arr
会 return 数组项(如 1 2 3 4 5)并且 number + []
给出字符串,但我真的很困惑为什么 ,
是已添加到输出数组。
是否因为console.log()
中的...arr
结果是 [..."1, 2, 3, 4, 5" + []]
其中输出相同?
还是我不知道的神奇解释?
Here 是对应用于数组的 +
运算符的解释。那么会发生什么:
arr + []
给你一个字符串 "1,2,3,4,5"
- 然后该字符串 spreaded/splitted(使用扩展语法)变成该字符串的字符数组。
当你这样做时添加 Nurbol 的答案
const arr = [1, 2, 3, 4, 5];
console.log([...arr + []]);
它将变成一个字符串,数组中的每个元素都将其转换为一个字符串。由于逗号也在这里,所以它将成为字符串数组的一个元素。
当你这样做的时候
const arr = [1, 2, 3, 4, 5];
console.log((arr + []).split())
它创建该数组的单个字符串,然后您创建一个指定分割点的字符串数组。
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]
构建结果
代码输出:
const arr = [1, 2, 3, 4, 5];
console.log([...arr + []]);
给予
[ '1', ',', '2', ',', '3', ',', '4', ',', '5' ]
我知道 ...arr
会 return 数组项(如 1 2 3 4 5)并且 number + []
给出字符串,但我真的很困惑为什么 ,
是已添加到输出数组。
是否因为console.log()
中的...arr
结果是 [..."1, 2, 3, 4, 5" + []]
其中输出相同?
还是我不知道的神奇解释?
Here 是对应用于数组的 +
运算符的解释。那么会发生什么:
arr + []
给你一个字符串"1,2,3,4,5"
- 然后该字符串 spreaded/splitted(使用扩展语法)变成该字符串的字符数组。
当你这样做时添加 Nurbol 的答案
const arr = [1, 2, 3, 4, 5];
console.log([...arr + []]);
它将变成一个字符串,数组中的每个元素都将其转换为一个字符串。由于逗号也在这里,所以它将成为字符串数组的一个元素。
当你这样做的时候
const arr = [1, 2, 3, 4, 5];
console.log((arr + []).split())
它创建该数组的单个字符串,然后您创建一个指定分割点的字符串数组。
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]
构建结果