Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';.substr(0,1)和.charAt(0)之间的区别是什么?_Javascript_Performance_String - Fatal编程技术网

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)快,这是有道理的。