Javascript 下面的java脚本箭头函数如何识别索引?

Javascript 下面的java脚本箭头函数如何识别索引?,javascript,callback,arrow-functions,Javascript,Callback,Arrow Functions,下面的脚本以两种方式转换给定数组。 两者都能完成任务,只是我不明白第二种方法是如何工作的 //Define array var a = [[1,2,3],[4,5,6]]; //Transpose var b = a[0].map((col, i) => a.map(row => row[i])); console.log(b); //[ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ] //Transpose using callback b = a[0].map(

下面的脚本以两种方式转换给定数组。 两者都能完成任务,只是我不明白第二种方法是如何工作的

//Define array
var a = [[1,2,3],[4,5,6]];

//Transpose
var b = a[0].map((col, i) => a.map(row => row[i]));
console.log(b); //[ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ]

//Transpose using callback
b = a[0].map(callbBackFunction(a));
b = a[0].map(callbBackFunction()); //Correction
console.log(b); //[ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ]

function callbBackFunction() {        
    return (col, ind) => a.map(row => row[ind]);
}
这两种方法本质上是相同的,只是在第二次提取时将map回调函数提取为外部函数

我不明白的是
callBackFunction
中的变量
ind
是如何赋值的,因为
callBackFunction
既没有定义,也没有使用参数调用

map函数使用当前索引(以及当前项和映射数组)调用提供的回调函数(在本例中为
callBackFunction
),但
callBackFunction
没有接受此值的参数

我错过了什么

*编辑: 这是一个打字错误:

b=a[0].map(callbBackFunction())

而不是

b=a[0].map(callbBackFunction(a))


callbBackFunction
map
运行之前执行,并且实际返回其中的函数。该函数在
map
被激发之前不会执行,在该函数中,您可以看到它与
map
的回调具有相同的函数签名

function callbBackFunction() {        
    return (col, ind) => a.map(row => row[ind]);
}
这里有一个例子可以帮助我们理解这一点:

const fn1 = () => {
     return (name) => "hello " + name
}

// fn1 returns the name func
const nameFn = fn1()

// we can now call nameFn with an argument
nameFn('OJNSim') // hello OJNSim

您可以在此处了解有关闭包的更多信息:

callbBackFunction
没有任何参数,因此
callbBackFunction(a)
也可以是
callbBackFunction()
。那里的内部函数使用全局
a
而不考虑。