在 Javascript 中使用逗号而不是 + 连接原始类型有什么好处吗?

Is there any advantage of of using comma over + to concatenate primitive types in Javascript?

本文关键字:类型 原始 连接 什么 Javascript      更新时间:2023-09-26

我在 Javascript 中看到过连接原始数据类型的逗号,并且想知道使用逗号是否与+运算符以及 .concat() 函数相比有任何区别?

所以下面的语句给了我一个例子 abc

var value1 = a, value2 = b, value3 = c;
document.write(value1,value2,value3);

苹果和橙子。在您的示例中没有连接任何内容;您只需为 write() 函数指定 3 个参数。

document.write(exp1, exp2, exp3, ...)接受多个参数,当给定多个参数时,它将遍历所有参数,就像您分别对每个参数调用write()一样。

但是,逗号在计算表达式时确实有用,其中逗号用于处理多个表达式并返回最后一个表达式。要查看实际操作,您需要将参数包装在一组括号中,以便它形成单个参数:

document.write("a","b","c") // abc
document.write( ("a", "b", "c") )  // c 
alert("a","b","c") // a
alert( ("a","b","c") ) // c
alert( (x=2, ++x) ) // 3

由于字符串串联是计算中最繁重的操作之一,因此使用带有各种参数的document.write会表现得更好。

请参阅此测试(它有时会在IE中挂起,因此请使用其他浏览器)http://jsperf.com/document-write-vs-concatenation

解释:

document.write("val1", "val2", "val3");

相当于

document.write("val1");
document.write("val2");
document.write("val3");

因此,速度要快得多,因为它不连接字符串。

在大多数浏览器中(IE <= 8,Gecko),使用 + 运算符的字符串连接具有可怕的性能。

例如,在我的公司,我们必须逐个编写一个大的HTML片段。在这种情况下,我们有这样的东西:

var id = 123;
var html = [];
html.push('<div id="', id, '">hello</div>');
var result = html.join('');

在你有很多串联的情况下,这比以下要好得多:

var id = 123;
result = '<div id="' + id + '">hello</div>';

所以要回答你的问题 - 这真的取决于情况。如果要将许多字符串连接在一起,则由于性能不佳,切勿使用 + 运算符。但是在99%的情况下,性能提升是如此之少,以至于尝试其他任何事情都是痛苦的。但是,如果您实际上可以选择逗号分隔(例如在array.push或document.write的情况下),那么您绝对应该利用它。