我在MDN上阅读了传播语法,并且它可以与数组和字符串一起使用:
扩展语法允许在可能需要零个或多个参数(用于函数调用)的地方扩展诸如数组表达式或字符串之类的可迭代 - mdn。< / p>
阵列对我来说很清楚。它会将元素扩展为单独的参数 但我没有找到字符串的例子。
那么,使用扩展语法在函数调用中扩展字符串的规则是什么? 如果字符串字符用空格分隔,因为我试过这个并打印3。
var x = "1 2 3";
console.log(Math.max(...x));
&#13;
答案 0 :(得分:5)
正如我们在下面看到的,您的示例实际上是扩展到5个元素,其中2个是空格字符。您还可以在下面看到字符串上的扩展运算符与使用.split('')
相同。
const x = "1 2 3";
console.log([...x]);
console.log(x.split(''));
&#13;
答案 1 :(得分:4)
空字符串上的Math.max评估为+" "
或Number(" ")
因此0
let num = "1 2 3";
console.log( Math.max(...num)) // ["1"," ","2"," ","3"] >>> [1,0,2,0,3] >>> 3
&#13;
因此,直接传播带有数字的字符串是不明智的,因为34 8 9
最多会传到9
。
始终事先按分隔符num.split(" ")
拆分。
答案 2 :(得分:1)
传播语法将导致5个元素,其中2个是空格字符:
const x = "1 2 3";
console.log([...x]);
//=> ["1", "", "2", "", "3"]
详细信息:
扩展运算符的结果将是["1", "", "2", "", "3"]
,其中包含空格字符。
根据此结果, Math.max()将尝试通过将非Number类型转换为Number来查找数组中的最大数字,类似于运行Number("1")
进行转换String
变成Number
。空格字符将转换为数字0,类似于Number("") === 0
。
因此,您剩下的数字列表如下:[ 1, 0, 2, 0, 3 ]
,在该数字上 Math.max()将选择3作为最大数字。
答案 3 :(得分:0)
var x = "123";
console.log(Math.max(...x));
// prints 3
...
将字符串视为可迭代的,相当于一个字符映射到一个元素的数组。