字符串+;字符串VS+;=在Javascript中
就空间和/或性能而言,在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
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中获得这种性能。