javascript - Javascript 字符串长度是常数时间吗?

标签 javascript string performance

我是 JS 的新手,意识到长度被认为是一个属性。但我收到一条评论,要求不要在循环中使用 str.length:

for (i=0; i<str.length; i++){...}

对比

var len = str.length;
for (i=0; i<len; i++){...}

现在,我知道 str.length() 在 Java 中是常量时间操作,因为 length 在 String 类中存储为一个字段。但话又说回来,字符串在 Java 中是不可变的。 我不确定 JS 字符串。 str.length 在 JS 中也保证恒定时间吗?在网络上的任何地方都找不到这个讨论。

最佳答案

字符串在 JavaScript 中也是不可变的。 length 属性不需要在每次访问时都计算。

我创建了一个 jsperf benchmark供您在此处查看。

您会注意到速度是一样的。

关于javascript - Javascript 字符串长度是常数时间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30926007/

相关文章:

performance - 为什么 pgAdmin 4 太慢?

javascript - 异步读取数据库返回集合

javascript - ASP.NET Core Ajax "done"、 "success"或 "error"未触发

.net - Delphi至.Net格式的字符串转换

Python正则表达式根据数字后面的逗号进行分割

用于音频处理的 Java 实用吗?

c++ - 通过将 "goto"转换为分支进行优化

javascript - 无法理解 <x>.prototype.constructor?

php - 查询 functions.php 中的函数?

java - Java中如何检测字符串中的重复单词?