JavaScript嵌套函数如何获取参数?以findIndex回调参数note为例
const findNote = function(array, lookedUp) { const index = array.findIndex(function(note){ return note.title === lookedUp }) return array[index] }
原理说明
- 你传入
findIndex的匿名函数是回调函数,这类函数不需要开发者手动调用、手动传参,是由JS内置的findIndex方法内部自动调用、自动注入参数的。 findIndex运行时会遍历调用它的所属数组(也就是你代码里的array),每遍历到一个数组元素,就会自动按顺序传入3个参数给回调:- 当前遍历到的数组元素,你的代码里用
note形参来接收这个值 - 可选:当前元素对应的数组下标
- 可选:调用
findIndex的原数组本身
- 当前遍历到的数组元素,你的代码里用
- 你疑惑的「传入findNote的参数会不会自动传递给findIndex」不成立:
findIndex只会从它所属的调用数组里取遍历值,和外部函数参数没有自动传递逻辑,只是你刚好把findNote接收的array作为了findIndex的调用主体而已。
直观示例
你可以运行这段代码验证逻辑:
const testArr = [1, 2, 3] testArr.findIndex(function(item, index) { console.log(`遍历到元素:${item},对应下标:${index}`) return item === 2 }) // 控制台输出: // 遍历到元素:1,对应下标:0 // 遍历到元素:2,对应下标:1
示例里的item、index都没有手动传入实参,都是findIndex遍历过程中自动注入的。
内容的提问来源于stack exchange,提问作者blgotkn
相关产品推荐
相关产品推荐

