在JavaScript中转换为字符串

2020/10/20 07:01 · javascript ·  · 0评论

我发现了三种String在JavaScript中将变量转换为的方法。

我在jQuery源代码中搜索了这三个选项,
它们都在使用中

我想知道它们之间是否有任何区别:

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

演示

它们都产生相同的输出,但是其中一个比另一个更好吗?

我会说的
+ ""优点是可以节省一些字符,但这不是那么大的优势,还有其他吗?

他们的行为不同,当valuenull

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

如果value是,则会发生非常相似的行为undefined(请参阅jbabey的答案)。

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

有差异,但可能与您的问题无关。例如,toString原型不存在于未定义的变量上,但是您可以使用其他两种方法将undefined强制转换为字符串:

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/

它们的行为相同,但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"

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

为了完整性:正如asawyer所述,您也可以使用.toString()方法。

除上述所有内容外,还应注意,对于定义的值v

  • String(v) 来电 v.toString()
  • '' + vv.valueOf()在任何其他类型的类型转换之前调用

因此,我们可以执行以下操作:

var mixin = {
  valueOf:  function () { return false },
  toString: function () { return 'true' }
};
mixin === false;  // false
mixin == false;    // true
'' + mixin;       // "false"
String(mixin)     // "true"

在FF 34.0和Node 0.10中测试

如果您可以使用null,undefined,NaN,0和false,则将所有类型转换为”(s ? s+'' : '')会更快。

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

注意-目前,各浏览器之间存在重大差异。

实际示例:我有一个日志函数,可以使用任意数量的参数调用log("foo is {} and bar is {}", param1, param2)如果将DEBUG标志设置为true,则括号将替换为给定的参数,并将字符串传递给console.log(msg)参数可以并且将是字符串,数字,以及JSON / AJAX调用可能返回的任何参数,甚至可以是null

  • arguments[i].toString()由于可能的null,因此不是一种选择(请参阅Connell Watkins答案)
  • JSLint会抱怨arguments[i] + ""这可能会或可能不会影响使用什么的决定。有些人严格遵守JSLint。
  • 在某些浏览器中,连接空字符串比使用字符串函数或字符串构造函数要快一些(请参阅Sammys S. answer中的JSPerf测试)。在Opera 12和Firefox 19中,串联空字符串的速度更快(在Firefox 19中为95%),或者至少是JSPerf这样说。

在此页面上,您可以自己测试每种方法的性能:)

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

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

本文地址:http://javascript.askforanswer.com/zaijavascriptzhongzhuanhuanweizifuchuan.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!