为什么以下内容无法在Javascript中运行?
> var a = [1, 2, 3]
undefined
> a.map(toString)
["[object Undefined]", "[object Undefined]", "[object Undefined]"]
但这有效:
> a[1].toString()
"2"
答案 0 :(得分:4)
您正在尝试调用window.toString
函数,Number.prototype
必须使用该号码作为接收者。
更简单的解决方案是使用String
构造函数:
a.map(String)
答案 1 :(得分:3)
toString
不是一个接受参数的函数,它是全局对象的一个方法,但方法不是bound by default in JS。
a.map(function (x) { return x.toString(); })
会做你想要的,
a.map(String)
因为String
构造函数在作为函数调用时会将其参数强制转换为字符串。