我想知道如何在js中计算字符串的字符串长度。
是函数调用或类数据成员。
我想知道当我们执行以下代码时会发生什么:

a = 'this is a string';
console.log(a.length); // what actually happens at this point?

另外,如果这样做:
a += ' added something';
console.log(a.length); // at what point is the new length calculated
//and/or updated for the object 'a';

最后,在对字符串使用循环时是否需要将字符串长度存储在temp变量中,还是可以直接使用以下内容(速度更快/处理器效率更高):
for(var i=0;i<a.length;i++){
  // doing anything here
}

总结一下我的问题,我想知道String.length背后的处理,并且在遍历字符串时哪种方法更好?

最佳答案

字符串在JavaScript中是不可变的。
a += "somestring"不会更改字符串的长度,但会生成一个新字符串。

这意味着没有“新长度”,但是长度只是字符串定义的一部分(更确切地说,它存储在实现中的相同结构中)。

关于

for(i=0;i<a.length;i++){ // did you forget the 'var' keyword ?

一种不常见的做法(如果您不更改a)是将其优化为
for (var i=0, l=a.length; i<l; i++)

为了避免读取长度,但如果将性能与现代引擎进行比较,您会发现这并没有使代码现在更快。

您必须记住的是:查询字符串的长度很快,因为没有计算量。构建字符串(例如带连接)的速度稍慢一些。

09-19 20:02