我觉得JavaScript太神奇了。
原本写一个不定参数的加法运算要这样写:
1.最原始的写法
function add() {
let sum=0;
for(let i=0 ;i<arguments.length;i++){
sum+=arguments[i];
}
return sum;
};
add(1,2,3);
2.在我学了箭头函数和剩余参数后变成了这样
当不知道参数有多少个,可以用省略号代替,省略号后面接参数名,剩余参数的本质是一个数组,如果没有值则是空数组。
const add=(...args)=>{
let sum=0;
for(let i=0 ;i<args.length;i++){
sum+=args[i];
}
return sum;
};
console.log(add(1,2,3,4));
3.在我学了reduce方法后变成了这样
const add_reduce=(...args)=>{
return args.reduce((total,currentValue)=>{ return total+currentValue});
};
console.log(add_reduce(1,2,3,4,5));
而此时由于返回值只有一个表达式,return和{}也可以省略掉。省略return的时候,要同时省略{}。
const add_reduce=(...args)=>args.reduce((total,currentValue)=>total+currentValue);;
// 没错就是两个分号,也可以写一个分号,甚至不写分号
// 真让人难以理解
console.log(add_reduce(1,2,3,4,5));
实在不敢想象,不定参数的加法运算只用1行代码就能写完!
但这种写法对我这种小白来说还是有很大的压力,需要时间反应。
关于数组的reduce 方法我还不太熟,特别容易忘,所以在这里贴一下reduce方法。
// 使用reduce方法进行加法运算
let nums=[1,2,3,5];
let a=nums.reduce(function(total,value){
return total+value;
});
console.log(a);
JavaScript语法虽然可以被理解,但是有点太多了,特别这种混杂在一起,很容易让人迷糊。