function add(...values) {
let sum = 0;
console.log(values)
for (var val of values) {
sum += val;
}
return sum;
}
let sun=[1,2,3,4,5,6,7,8,9,20]
let b = [0, ...sun, 4];
console.log(add(b))
console.log(add(b)) 应该得到的是什么,为什么是这个结果--。。跟我想的怎么不一样。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你应该
console.log(add(...b))设计到三个问题,1是扩展操作符,2是rest操作符,3是隐式转换
参考
console.log(sun)得到的不还是[1,2,3,4,5,6,7,8,9,20]
首先,let b并不是你所想的[0,1,...,20,4],而是变成了[[0,1,...,20,4]]。所以在你console.log(values)输出的就是`[ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 20, 4 ] ],而在
String/Number和数组相加,会把数组转换成字符串然后执行‘+’
所以最后结果是String类型
楼上回答的都是些什么奇怪的东西。。。
关键点难道不是因为你
add()方法定义的时候展开了数组了吗(...values)所以你函数里面获取的value已经是一个二维数组了。简单来讲就是
add函数内部获取的values已经变成这个了:[[0,1,2,3,4,5,6,7,8,9,20,4]]你把
values前面的展开运算符去掉就是你要的结果了。这里有解释
给
add()传参数要这样写:另外一种写法给你参考: