0

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

所以下面的例子给了我 abc

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

3 回答 3

3

苹果和橙子。您的示例中没有连接任何内容;您只需为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
于 2012-06-27T23:25:35.337 回答
1

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

看这个测试(它有时会在 IE 中挂起,所以请使用其他浏览器)http://jsperf.com/document-write-vs-concatenation

解释:

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

相当于

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

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

于 2012-06-27T23:30:03.553 回答
0

在大多数浏览器(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 的情况下),那么您绝对应该利用它。

于 2012-06-28T00:04:25.537 回答