2

为什么以下内容在 Javascript 中不起作用?

> var a = [1, 2, 3]
undefined
> a.map(toString)
["[object Undefined]", "[object Undefined]", "[object Undefined]"]

但这有效:

> a[1].toString()
"2"
4

2 回答 2

4

toString不是带参数的函数,它是全局对象的方法,但在 JS 中默认不绑定方法。

a.map(function (x) { return x.toString(); })

会做你想做的事

a.map(String)

因为String构造函数在作为函数调用时会将其参数强制转换为字符串。

于 2013-06-25T19:43:42.560 回答
4

您正在尝试调用该 window.toString函数,并且该函数Number.prototype必须应用该号码作为接收者。

更简单的解决方案是使用String构造函数:

 a.map(String)
于 2013-06-25T19:44:04.880 回答