在 Javascript 中使用逗号而不是 + 连接原始类型有什么好处吗?
Is there any advantage of of using comma over + to concatenate primitive types in Javascript?
我在 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的情况下),那么您绝对应该利用它。
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 如何在DOM元素上按类型构建此函数
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 如何从querySelectorAll中获取按钮类型
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 如何将具有文本类型值的var放入jQuery函数中
- 使用jQuery从原始页面内容创建iframe
- javascript解释器如何理解变量的数据类型
- 将主干集合对象转换为其原始类型
- JavaScript中的“符号”原始数据类型是什么?
- AngularJS指令,该指令使用模板中的原始元素类型
- 在 Javascript 中使用逗号而不是 + 连接原始类型有什么好处吗?
- Javascript - 原始与引用类型
- 新字符串的类型(“aaa”)==;对象“;?一切事物都是一个对象,但也有原始类型
- 如何将原始Javascript插入自定义内容类型的Omega模板
- 输入类型="hidden" "的原始用途
- 将num或布尔类型json对象从字符串类型转换为其原始类型