在研究数组时,我发现以下三个语句之间存在显著的差异:
为什么会有这样的差异呢?
[1,2]+[3,4];
[1,2].toString()+[3,4].toString();
[1,2].join(',')+[3,4].join(',');
如果
[1,2]+[1,2]
的表现与将其转换为字符串然后连接两个字符串相同,那么它们的性能不应该有些相似吗?
这个问题的灵感来自于这个答案
在研究数组时,我发现以下三个语句之间存在显著的差异:
为什么会有这样的差异呢?
[1,2]+[3,4];
[1,2].toString()+[3,4].toString();
[1,2].join(',')+[3,4].join(',');
如果
[1,2]+[1,2]
的表现与将其转换为字符串然后连接两个字符串相同,那么它们的性能不应该有些相似吗?
这个问题的灵感来自于这个答案
这可能与隐式和显式转换有关。
对于 [1,2]+[3,4]
,解释器需要自己确定输出为 string
。
对于 [1,2].toString()+[3,4].toString();
和 [1,2].join(',')+[3,4].join(',');
,你已经告诉了解释器它正在使用字符串。
最后两行之间的差异基本可以忽略不计。
最终,即使您这样做一百万次,您也不会真正注意到任何区别。
.join()
方法如何比较。 - Patrick Roberts