首页 > 解决方案 > 比较字符串时,JavaScript 是否从比较它们的长度开始?

问题描述

我想知道,在比较两个(可能很大)字符串时,JavaScript 是否在内部开始比较它们的长度,然后再循环字符。

如果不是,那是否意味着做一些类似的事情

if (string1.length !== string2.length || string1 !== string2)
  // do something if data changed

应该会赢得时间,对吧?(我假设字符串的只读length属性是在设置字符串时计算的,而不是在询问时计算的;不确定是否确实如此)

对于上下文,我正在处理大量字符串,因为我懒惰地 JSON.stringifying 从某些 API 接收到的对象数组(仅比较最新的元素可能会更好,但这个问题更多的是出于好奇,请注意字符串我会比较会是巨大的^^)

相关参考资料?

https://javascript.info/comparison

将 JavaScript 中的大字符串与哈希值进行比较

编辑

感谢@RobG 在评论中将我链接到 ECMA-262 的SameValueNonNumber

在步骤定义中,步骤 5 是

SameValueNonNumber ( x, y )

5.如果Type(x)是String,那么如果x和y是完全相同的代码单元序列(相同的长度和对应索引处的相同代码单元),返回true;否则,返回假。

我认为这回答了这个问题

标签: javascriptstringperformance

解决方案


推荐阅读