在 JavaScript 中转换为字符串

2022-08-30 01:16:06

我找到了三种在JavaScript中强制变量的方法。
我在jQuery源代码中搜索了这三个选项,它们都在使用中
我想知道它们之间是否有任何区别:String

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

演示

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


答案 1

当 是 时,它们的行为确实不同。valuenull

  • null.toString()引发错误 - 无法调用 null 的方法“toString”
  • String(null)返回 - “空”
  • null + ""还返回 - “空”

如果是,就会发生非常相似的行为(参见jbabey的答案)。valueundefined

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


答案 2

存在差异,但它们可能与您的问题无关。例如,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/