2011-07-05 11 views
13

我們想知道在thread這個.substr(0,1)和使用.charAt(0)當你想要得到第一個字符(實際上,它可能適用於任何你只需要一個字符的情況)之間有真正的區別。.substr(0,1)或.charAt(0)之間有什麼區別?

其中每一個都比另一個快嗎?

感謝您的回答!

最大值

+0

你可以嘗試剖析他們......也,答案可能是依賴於瀏覽器... – 2011-07-05 08:25:58

+1

你可以做一個benchark(http://jsperf.com/)。 –

+0

@Felix Kling:感謝您的鏈接,已添加書籤! – JMax

回答

17

測量它是關鍵!

轉到http://jsperf.com/substr-or-charat到基準它自己。

SUBSTR(0,1)運行在每秒21100301個操作我的機器上,的charAt(0)運行,每秒550852974次。

我懷疑charAt作爲一個數組在內部訪問字符串,而不是拆分字符串。

作爲評價發現,直接訪問焦炭使用串[0]比使用的charAt稍快(0)。

+1

Max的答案是針對Java,而不是JS ......而且你看起來你的結果是錯誤的! – Alnitak

+0

第一個數字是可疑的高。肯定是正確的。雖然這種聯繫是真棒 – templatetypedef

+0

啊,數字是南轅北轍 –

4

除非你的整個腳本是基於快速字符串操作的需要,否則我不會擔心性能方面的問題。我使用charAt()的理由是它的可讀性和語言提供的工作最具體的工具。另外,substr()不是嚴格的標準,儘管任何新的ECMAScript實現都不會忽略它,但它可能會發生。 str.charAt(0)的基於標準的替代方案是str.substring(0, 1)str.slice(0, 1),對於ECMAScript 5實現方案str[0]

相關問題