有没有javascript相当于.= for self concatenating?

Har*_*ldo 14 javascript

而不是做

my_var = my_var+'extra string';
Run Code Online (Sandbox Code Playgroud)

有没有像.=在php中的简写方法?

npu*_*pup 23

使用 +=

var s = 'begin';
s += 'ning';
Run Code Online (Sandbox Code Playgroud)

  • 哈 - 应该猜到了! (2认同)

Poi*_*nty 5

性能提示(注意 - 此建议对IE6有效,但在2014年不再值得担心)

如果您正在编写一些Javascript代码来构建一个长字符串(比如,一个相当大的HTML块,或者一个ajax请求的长参数列表),那么就不要养成这样做的习惯:

var longString = "";
for (var i = 0; i < someBigNumber; ++i) {
  if (i > 0) longString += "<br>" + whatever;
  longString += someMoreStuff();
}
Run Code Online (Sandbox Code Playgroud)

随着longString时间越来越长,Internet Explorer将在循环的每次迭代中越来越难.即使someBigNumber不是那么大,那个循环的表现也可能非常糟糕.

幸运的是,有一个简单的选择:使用数组:

var accumulator = [];
for (var i = 0; i < someBigNumber; ++i) {
  accumulator.push(someMoreStuff());
}
var longString = accumulator.join("<br>" + whatever);
Run Code Online (Sandbox Code Playgroud)

方式,在Internet Explorer中比重复的字符串附加更快.

  • 更好的是,Pointy,你这个大假人,用框架做这样的事情!框架通常非常优化,并且通常以经过良好测试,高效,安全的方式完成大部分工作. (2认同)