根据the MDN JS Doc,charAt
方法接受integer
并返回索引处的字符。并且
如果您提供的索引超出范围,JavaScript将返回一个空字符串。
我发现它也需要string
作为参数,返回值很有趣。
示例代码:http://jsfiddle.net/yangchenyun/4m3ZW/
var s = 'hey, have fun here.'
>>undefined
s.charAt(2);
>>"y" //works correct
s.charAt('2');
>>"y" //This works too
s.charAt('a');
>>"h" //This is intriguing
有没有人知道这是怎么发生的?
答案 0 :(得分:9)
该规范中的Section 15.5.4.4描述了该算法。在那里,您将看到(pos
是传递给charAt
的参数):
Section 9.4中描述了(...)
3.让位置为ToInteger( pos ) (...)
ToInteger
:
- 让 number 成为在输入参数上调用ToNumber的结果。
- 如果数字 NaN ,请返回 +0 。
醇>
(...)
'a'
不是数字字符串,因此无法转换为数字,因此ToNumber
将返回NaN
(请参阅Section 9.3.1),然后生成{{1} }}
另一方面,如果您传递有效的数字字符串,例如0
,'2'
会将其转换为相应的数字ToNumber
。
底线:
2
与s.charAt('a')
相同,因为s.charAt(0)
无法转换为整数。