gpt4 book ai didi

javascript - 为什么不能传递 toUpperCase 来映射工作

转载 作者:行者123 更新时间:2023-12-03 05:05:17 24 4
gpt4 key购买 nike

我昨天在看一个问题,发帖者询问如何转换数组内容的大小写。我知道我可以传递对函数的引用来映射,例如:

function appendText (el){
return el += ' - appended text';
}

['a','b'].map(appendText); //["a - appended text", "b - appended text"]

但是当我尝试使用

array.map(String.toUpperCase);
array.map(String.prototype.toUpperCase);

我收到错误

Uncaught TypeError: String.prototype.toUpperCase called on null or undefined

这听起来像是该方法没有传递元素 map据我了解,将会过去。为什么这不起作用?

最佳答案

您没有将任何内容传递给 prototype/扩展方法。只需使用箭头函数传入数组项的值即可。

要回答问题背后的逻辑,您根本无法传递无上下文(例如没有 this)原型(prototype)方法(即,从基本 String类(class))。 map 将按名称运行函数,并将值作为第一个参数(如 appendText(a) 所示)

function appendText (el){
return el += ' - appended text'
}

var array = ['a','b']

console.log(array.map(appendText))
console.log(array.map(a => appendText(a)))
console.log(array.map(a => a.toUpperCase()))

关于javascript - 为什么不能传递 toUpperCase 来映射工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42028426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com