1

我想在 JavaScript 中将对象转换为字符串,但我对应该使用哪种方法感到困惑。我在下面有一个简单的例子。

第一种方法

/\d+/g.toString()

第二种方法

/\d+/g + ''

这两者有区别吗?

4

3 回答 3

3

第二种方法也适用于null/undefined并且不是很清楚:

a.toString() //Fails with null/undefined

a + "" //Works with anything

您可能还会发现其他成语,例如+a有用的,这是一个更严格的parseFloat.

于 2013-05-16T12:54:05.303 回答
2

不,没有区别,当必须将对象转换为字符串时,toString会调用该函数。

更准确地说,toPrimitive应用了带有提示“字符串”的转换,它是在ECMAScript 规范中为对象定义的。

请注意,当您传递 null 或 undefined (请参阅规范)时,只有加法方案才有效。这与减少的详细程度一起解释了为什么toString在 JavaScript 中很少显式调用。隐式转换是语言实践的重要组成部分,因此使用这种方法是完全正常的,就像您经常在字符串前面加上前缀+以将其转换为数字 (ie +'33') 一样。

于 2013-05-16T12:53:47.623 回答
0

两者都是一样的。第二个也将调用toString().

于 2013-05-16T12:54:17.220 回答