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
是什么意思。这应该代表一个字符串吗?还有别的吗?不是绳子。它被计算为三个整数值(可以这么说),也可以这么说,不是。…
不是一个运算符,它根本不计算任何值-它只是函数调用语法的一部分。