JavaScript/React数组内是否支持双箭头运算符?如何向指定位置传值?
解答
首先澄清两个概念:
- 你贴的示例代码里不存在「双箭头运算符」,数组的每一项都是普通的单参数单箭头函数,JavaScript/React完全支持这种写法——数组可以存储任意合法JS类型的值,自然也包括函数类型。
- 如果你说的「双箭头」是指柯里化形式的多阶箭头函数(比如
a => b => a + b这种连续箭头的写法),JS同样支持将其存在数组中。
先指出你当前代码的问题:你写的这几个箭头函数,函数体里只有单独的字符串字面量,既没有处理传入的参数,也没有设置返回值,调用时只会返回undefined,没有实际执行效果。
给数组里已有箭头函数传参的方法
数组里的函数按索引位置存储,直接通过索引取出对应函数,传入参数调用即可:
// 索引0对应你写的带one参数的第一个函数,传参调用 const firstResult = arr2[0]('你要传给one的参数值') // 索引1对应带two参数的第二个函数,传参调用 const secondResult = arr2[1]('你要传给two的参数值')
如果你希望函数接收参数后返回有效结果,需要修正箭头函数的写法,举个可运行的例子:
const arr2 = [ one => `接收到one位置传入的值:${one}`, two => `接收到two位置传入的值:${two}`, three => `接收到three位置传入的值:${three}` ]; // 测试调用 console.log(arr2[0]('Hello')) // 打印:接收到one位置传入的值:Hello
如果是双箭头的柯里化函数,调用时连续传参即可:
const arr2 = [ one => two => `one位置值:${one},two位置值:${two}` ] // 连续传参调用 console.log(arr2[0]('Hello')('Answer')) // 打印:one位置值:Hello,two位置值:Answer
向数组新增/替换箭头函数的方法
push的作用是往数组末尾追加新元素,直接把箭头函数作为参数传入push即可:
// 往数组末尾追加一个新的单箭头函数 arr2.push(four => `接收到four位置传入的值:${four}`) // 调用刚追加的函数(刚追加的元素索引是数组长度-1) console.log(arr2[3]('测试追加内容')) // 打印:接收到four位置传入的值:测试追加内容
如果你要修改one、two对应位置已经存在的函数,不需要用push,直接按索引赋值覆盖就行:
// 覆盖索引0(原one参数对应位置)的函数 arr2[0] = newOne => `覆盖后的one函数收到值:${newOne}`
内容的提问来源于stack exchange,提问作者Copy Paste
相关产品推荐
相关产品推荐

