a = b + a的快捷方式;

时间:2011-10-26 13:18:34

标签: javascript

所以我意识到a += b;实际上是a = a + b;。 (尝试用字符串替换ab。)

a = b + a;是否有快捷方式?我试过a =+ b;,但这似乎不起作用。

3 个答案:

答案 0 :(得分:6)

如果处理数字,

a = b + aa = a + b的含义相同。对于字符串,没有类似的快捷方式。

答案 1 :(得分:2)

对于std :: string,operator+=是在lhs参数上执行的运算符,它改变参数并返回引用。由于字符串的operator+表示“追加”,因此您不可能有相反的操作符。

这开始似乎是一个恼人的限制,但实际上有一个很好的理由。 std :: string以矢量和其他动态字段相同的方式动态分配更多内存。 ( - >恒定的摊销复杂性)。此操作始终在最后分配内存。因此,每当您想要在字符串的开头添加内容时,您实际上必须更改将作为新前缀的参数,或者您必须构造一个全新的字符串。

operator+=强制您更改将为结果字符串添加前缀的对象。无论如何,创建一个全新的对象(具有内存分配和完全复制两个参数)不应该隐式发生。如果你想要b = a + b之类的东西,这意味着b现在带有一个新构造的字符串。这是一项新任务。另一方面,operator+= 更改左侧参数。

答案 2 :(得分:0)

我不认为做a = b + a的方式较短(处理字符串时)。