要理解[[1, 2], [3, 4]].map(([a, b]) => a + b)这段代码
首先理解一下map内部的运行机制
思考以下代码
let arr = ['val1', 'val2', 'val3']
arr.map((item, index) => {
console.log(item); // 每次遍历打印: val1 , val2 , val3
console.log(index); // 每次遍历打印: 1 , 2 , 3
})
但map的参数不是const声明的所以可以对他进行赋值
let arr = ['val1', 'val2', 'val3']
arr.map((item, index) => {
item = index;
console.log(item); // 每次遍历打印: 1, 2, 3
console.log(index); // 每次遍历打印: 1 , 2 , 3
})
理解map 的运行原理之后回到题目中的代码
[[1, 2], [3, 4]].map(([a, b]) => a + b)
题目中的代码也可以写成以下形式便于理解
let arr1 = [1,2];
let arr2 = [3,4];
[arr1,arr2].map([a,b] =>{ //此时的a相当于1,b相当于2
return a + b
})
由于解构赋值 arr1 = [a , b] 此时等号后面相当于声明了两个变量a和b 并且给他们赋了新值覆盖了原先的值
最终相当于以下代码
var arr1 = [1, 2];
var arr2 = [3, 4];
[arr1, arr2].map(arr => {
var a = arr[0];
var b = arr[1];
return a + b
})