我想在 JavaScript 中将对象转换为字符串,但我对应该使用哪种方法感到困惑。我在下面有一个简单的例子。
第一种方法
/\d+/g.toString()
第二种方法
/\d+/g + ''
这两者有区别吗?
我想在 JavaScript 中将对象转换为字符串,但我对应该使用哪种方法感到困惑。我在下面有一个简单的例子。
/\d+/g.toString()
/\d+/g + ''
这两者有区别吗?
第二种方法也适用于null/undefined
并且不是很清楚:
a.toString() //Fails with null/undefined
a + "" //Works with anything
您可能还会发现其他成语,例如+a
有用的,这是一个更严格的parseFloat
.
不,没有区别,当必须将对象转换为字符串时,toString
会调用该函数。
更准确地说,toPrimitive
应用了带有提示“字符串”的转换,它是在ECMAScript 规范中为对象定义的。
请注意,当您传递 null 或 undefined (请参阅规范)时,只有加法方案才有效。这与减少的详细程度一起解释了为什么toString
在 JavaScript 中很少显式调用。隐式转换是语言实践的重要组成部分,因此使用这种方法是完全正常的,就像您经常在字符串前面加上前缀+
以将其转换为数字 (ie +'33'
) 一样。
两者都是一样的。第二个也将调用toString()
.