如果是((a)=> {}).length,形参有一个所以函数的length为1 ;如果是((a,b)=> {}).length,形参有两个所以函数的length为2假如:function aaa(){}aaa(1,2);console.log(aaa.length) ;//值为0,因为形参个数是0,所以函数的length为0
1的二进制表示 00012的二进制表示 00101&2结果是 0000 ,转成10进制也就是0
因为 [ ] 是对象,所以 toPrimitive->valueOf->toString为 '' ,Number('')得0
[1,2,3,4,5,6].reduce((a,b)=> a-b, 0); //以上运行过程如下: //a = 0, b = 1, 函数返回值val = -1 (有初始值,则a = initialVal = total = 0) //a = -1, b = 2, val = -3 //a = -3, b = 3, val = -6 //a = -6, b = 4, val = -10 //a = -10, b = 5, val = -15 //a = -15, b = 6, val = -21 (最后函数返回值是-21)
[1,2,3,4,5,6].reduce((a,b)=> a-b); //以上运行过程如下: //a = 1, b = 2, 函数返回值val = -1 (无初始值,则a = 1, b =2) //a = -1, b = 3, val = -4 //a = -4, b = 4, val = -8 //a = -8, b = 5, val = -13 //a = -13, b = 6, val = -19 (最后函数返回值是-19)
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)