我想知道如何在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++)
为了避免读取长度,但如果将性能与现代引擎进行比较,您会发现这并没有使代码现在更快。
您必须记住的是:查询字符串的长度很快,因为没有计算量。构建字符串(例如带连接)的速度稍慢一些。