Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符串+;字符串VS+;=在Javascript中_Javascript_String_Performance_Concatenation - Fatal编程技术网

字符串+;字符串VS+;=在Javascript中

字符串+;字符串VS+;=在Javascript中,javascript,string,performance,concatenation,Javascript,String,Performance,Concatenation,就空间和/或性能而言,在Javascript中将多个字符串文本连接在一起的情况下,添加字符串的更有效方法是什么 x+=y 或 x+y; 我一直在思考这个问题。当然,对于只有两个字符串被连接在一起的情况,实际上没有什么区别,但是对于CSS或html文档在JS中被结构化的情况,或者一个巨大的XML,无论出于什么原因,情况又如何呢 string+=“classA{}”; ... ..... 字符串+=“classX{}”; VS string+“classA{}”+ ... ..... +“clas

就空间和/或性能而言,在Javascript中将多个字符串文本连接在一起的情况下,添加字符串的更有效方法是什么

x+=y
x+y
; 我一直在思考这个问题。当然,对于只有两个字符串被连接在一起的情况,实际上没有什么区别,但是对于CSS或html文档在JS中被结构化的情况,或者一个巨大的XML,无论出于什么原因,情况又如何呢

string+=“classA{}”;
...
.....
字符串+=“classX{}”;
VS

string+“classA{}”+
...
.....
+“classX{}”;

如果这听起来像一个基本问题,那么很抱歉,但是当我不得不用Java编写XML解析器并实现StringBuilder的使用时,我遇到了类似的问题。不确定如何将其转换为JavaSript。

是否要修改
x
?更具体地说,如果
x
被修改,这有关系吗

x+y
本身不起任何作用,除非用作参数或捕获到变量
让z=x+y
这样做,正如
f(x+y)
那样

x+=y
相当于
x=x+y
,因此修改
x
,这可能是您想要的,也可能不是您想要的

通常,如果您的目的是“附加到
x
”并保存结果,那么您会说
x+=y


如果您的目的是在其他地方使用组合的
x
y
,例如
f(x+y)
,那么这是合适的。这里
f(x+=y)
发送的消息好坏参半,因为不清楚您为什么要追加和呼叫。

这完全是您自己的选择。你做得多么舒服。没有任何具体的标准。我可以说,当使用
x+=y
时,必须在字符串声明和修改之间使用多个语句。但是,这仍然取决于您自己的选择。

x+=y
更改
x
的值
x+y
计算表达式,但不更改任何一个变量。所以答案部分取决于你想要完成什么。@Jayce444是的,但只是快速检查了前三名的结果,结果完全过时了。有人甚至建议使用
String#concat
,因为性能原因,MDN强烈反对使用该方法。我更喜欢array.push以提高可读性:
const strings=[];strings.push(“classA{}”)。。。。strings.push(“classX{}”);返回字符串。join(“”)例如。也可以考虑Jaye,将这些比较与数组进行比较,而不是我所寻找的,并且指的是IE是一个使用得最好的浏览器之一。我的问题或多或少是关于消除“字符串+字符串”的歧义;很明显,(afaik)当使用+=,之前定义的
x
通过调用自身并将
y
添加到它中,从而得到
y
。当您重复执行此操作时,连接会变得相当大。我想这更多的是关于Javascript是否有类似于
StringBuilder
的东西的问题。如果有
x=x+y
,那么表示为
x+=y
就更容易了。如果你有
f(x+y)
或者
让z=x+y
,那么情况就不同了。如果你在做重复的连接,我不会担心,直到你有一个可测量的性能问题。JavaScript非常非常擅长处理字符串数据,而且非常高效,即使您直觉上认为它速度慢或效率低。许多人都非常努力地从JavaScript中获得这种性能。