在JavaScript中转换为字符串

我发现在JavaScript中,有三种方法可以将一个变量转换为`String'。
我在jQuery的源代码中搜索了这三个选项,**它们都在使用。
我想知道它们之间是否有什么区别。

value.toString()
String(value)
value + ""

[DEMO][1]

它们都产生相同的输出,但其中一个是否比其他的好?
我想说+ ""有一个优势,它可以节省一些字符,但这并不是那么大的优势,还有别的吗?

解决办法

当 "value "为 "null "时,它们的行为确实不同。

  • null.toString()抛出一个错误 - 不能调用null的'toString'方法
  • String(null)返回 - "null".
  • null + ""也会返回 - "null"

如果valueundefined,也会发生非常类似的行为(见jbabey'的回答)。

除此之外,还有一个可以忽略不计的性能差异,除非你在巨大的循环中使用它们,否则不值得担心。

评论(6)

有一些区别,但它们可能与你的问题无关。例如,toString原型不存在于未定义的变量上,但你可以使用其他两个方法将未定义的变量转换为一个字符串。

​var foo;

​var myString1 = String(foo); // "undefined" as a string

var myString2 = foo + ''; // "undefined" as a string

var myString3 = foo.toString(); // throws an exception

http://jsfiddle.net/f8YwA/

评论(1)

根据这个JSPerf测试,它们的速度不同。但除非你要大量使用它们,否则它们中的任何一个都应该表现良好。

为了完整起见。正如asawyer已经提到的,你也可以使用.toString()方法。

评论(4)