Javascript 什么';.substr(0,1)和.charAt(0)之间的区别是什么?
我们想知道当您想要获取第一个字符时,使用Javascript 什么';.substr(0,1)和.charAt(0)之间的区别是什么?,javascript,performance,string,Javascript,Performance,String,我们想知道当您想要获取第一个字符时,使用.substr(0,1)和使用.charAt(0)之间是否有真正的区别(实际上,它可以应用于您只需要一个字符的任何情况) 其中一个比另一个快吗?测量它是关键 自己去做基准测试 substr(0,1)在我的机器上每秒运行2110301次操作,charAt(0)每秒运行550852974次 我怀疑charAt在内部以数组的形式访问字符串,而不是拆分字符串 如注释中所示,直接使用字符串[0]访问字符比使用字符(0)稍微快一些。除非您的整个脚本都是基于快速字符串操
.substr(0,1)
和使用.charAt(0)
之间是否有真正的区别(实际上,它可以应用于您只需要一个字符的任何情况)
其中一个比另一个快吗?测量它是关键 自己去做基准测试 substr(0,1)在我的机器上每秒运行2110301次操作,charAt(0)每秒运行550852974次 我怀疑charAt在内部以数组的形式访问字符串,而不是拆分字符串
如注释中所示,直接使用字符串[0]访问字符比使用字符(0)稍微快一些。除非您的整个脚本都是基于快速字符串操作的需要,否则我根本不会担心性能方面的问题。我会使用
charAt()
,因为它是可读的,并且是该语言提供的最具体的工作工具。另外,substr()
并不是严格的标准,虽然任何新的ECMAScript实现都不太可能忽略它,但它可能会发生。str.charAt(0)
的基于标准的替代方案是str.substring(0,1)
和str.slice(0,1)
,对于ECMAScript 5实现,str[0]
您可以尝试分析它们……而且,答案可能依赖于浏览器……您可以制作一个benchark()。@Felix Kling:谢谢链接,书签!两者都返回“string”类型<代码>某物的类型。字符(0)=>“字符串”<代码>输入“某物”。substr(0,1)=>“string”@JMax:你也可以做一个“abcdefghijklmnopqrstuvwxyz”[0]
Max的答案是针对Java,而不是JS。。。同时,你的结果似乎是错误的!第一个数字高得令人怀疑。你确定那是对的吗?虽然这个链接非常棒。顺便说一下,这表明Chrome 14的速度有多快——charAt的运行速度几乎是Chrome 12的4倍…@Rich:我添加了a[0]
测试。。。在chrome上,a[0]
几乎和a.charAt(0)
一样快。啊,我现在发现a[0]比a.charAt(0)快,这是有道理的。