JavaScript charAt()运行时间复杂度、ECMAScript规范及浏览器表现问询
JavaScript
charAt() 方法时间复杂度解答 1. ECMAScript 规范相关规定
- 规范仅明确定义了
charAt()的输入输出行为,未对该方法的时间复杂度做出强制要求,你查阅规范时没有找到相关说明属于正常情况。 - 规范层面仅要求:当传入有效索引时返回对应位置的UTF-16码元对应的单字符字符串,索引超出0到字符串长度-1的范围时返回空字符串。
2. 主流浏览器的实际运行表现
- 目前Chrome的V8引擎、Firefox的SpiderMonkey引擎、Safari的JavaScriptCore引擎等所有主流JS引擎,都采用连续内存存储字符串,支持O(1)复杂度的随机访问,因此
charAt()的实际运行复杂度为O(1),执行效率和字符串长度没有关联。 - 只有早年部分老旧JS引擎采用绳(Rope)数据结构存储字符串时,
charAt()的时间复杂度为O(log n),该类实现现在已经完全被主流环境淘汰,常规开发场景无需考虑。
内容的提问来源于stack exchange,提问作者CC.
相关产品推荐
相关产品推荐

