我找到了三种在JavaScript中将变量转换为String的方法。 我在jQuery源代码中搜索了这三个选项,它们都在使用中。 我想知道它们之间有什么区别:

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

DEMO

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


当前回答

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

为了完整性:正如律师已经提到的,你也可以使用. tostring()方法。

其他回答

在这个页面上,你可以自己测试每个方法的性能:)

http://jsperf.com/cast-to-string/2

这里,在所有机器和浏览器上,' "" + str '是最快的,(String)str是最慢的

它们的行为相同,但toString也提供了一种转换数字二进制,八进制或十六进制字符串的方法:

例子:

var a = (50274).toString(16)  // "c462"
var b = (76).toString(8)      // "114"
var c = (7623).toString(36)   // "5vr"
var d = (100).toString(2)     // "1100100"

如果你对null, undefined, NaN, 0和false都转换为“then (s ?S +“:”)更快。

参见http://jsperf.com/cast-to-string/8

注意:此时不同浏览器之间存在显著差异。

当值为空时,它们的行为确实不同。

null.toString()抛出错误-不能调用null的方法'toString' 字符串(null)返回- "null" Null + ""也返回- " Null "

如果value未定义,也会发生非常相似的行为(参见jbaby的回答)。

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

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

为了完整性:正如律师已经提到的,你也可以使用. tostring()方法。