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)) 应该得到的是什么,为什么是这个结果--。。跟我想的怎么不一样。
let sun = [1, 2, 3, 4, 5, 6, 7, 8, 9, 20]
let b = [0, ...sun, 4];
//运行扩展运算符 将b转换成数组:[0,1,2,3...20];
function add(...values) {
//这里的...values是rest 操作符,将形参转换为一个数组。
//传入b转换为[[0,1,2,3,4]]
let sum = 0;
for (var val of values) {
sum += val;
//val为数组,0+[1,2,3,4,5...20];执行隐式转换,会把b转换为'0,1,2...20'
}
return sum;
}
console.log(add(b))
设计到三个问题,1是扩展操作符,2是rest操作符,3是隐式转换
参考