为什么以下内容在 Javascript 中不起作用?
> var a = [1, 2, 3]
undefined
> a.map(toString)
["[object Undefined]", "[object Undefined]", "[object Undefined]"]
但这有效:
> a[1].toString()
"2"
为什么以下内容在 Javascript 中不起作用?
> var a = [1, 2, 3]
undefined
> a.map(toString)
["[object Undefined]", "[object Undefined]", "[object Undefined]"]
但这有效:
> a[1].toString()
"2"
toString
不是带参数的函数,它是全局对象的方法,但在 JS 中默认不绑定方法。
a.map(function (x) { return x.toString(); })
会做你想做的事
a.map(String)
因为String
构造函数在作为函数调用时会将其参数强制转换为字符串。
您正在尝试调用该 window.toString
函数,并且该函数Number.prototype
必须应用该号码作为接收者。
更简单的解决方案是使用String
构造函数:
a.map(String)