【问题标题】:Map fails with function name, succeeds with inline function映射因函数名称而失败,因内联函数而成功
【发布时间】:2019-05-05 07:50:51
【问题描述】:

考虑这段代码:

const loadImage = thenify(map.loadImage).bind(map);
const markerNames = ['markers/red-map-marker.png', 'markers/teal-map-marker.png'];

// works
markerNames.map(x => loadImage(x))                      

// works
markerNames.map(function(x) { return loadImage(x) })   

// fails: "TypeError: e is not a function"
markerNames.map(loadImage)

我很难理解为什么第三种形式会失败。我原以为它与第二种形式的含义相同。

【问题讨论】:

    标签: javascript arrays promise


    【解决方案1】:

    我认为这是因为Array.map() 将两个参数传递给函数——数组元素,然后是数组索引。第二个被解释为好像它应该是一个函数,它不是。

    【讨论】:

    • 它实际上传递了三个参数
    • Array.prototype.map() 第二个参数是索引,第三个参数是原始数组。上下文或this 是传递给map() 的第二个参数的任何内容,在本例中为undefined
    猜你喜欢
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 2014-11-21
    • 2012-10-16
    • 1970-01-01
    • 2018-05-31
    相关资源
    最近更新 更多