根据 the MDN JS Doc , charAt
方法接受 integer
并返回索引处的字符。和
我发现它也将 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
有谁知道这是怎么发生的?
最佳答案
该算法在规范中的 Section 15.5.4.4 中进行了描述。在那里你会看到( pos
是传递给 charAt
的参数):
ToInteger
在 Section 9.4 中描述:
'a'
不是数字字符串,因此无法转换为数字,因此 ToNumber
将返回 NaN
(参见 Section 9.3.1 ),然后产生 0
。
另一方面,如果您传递有效的数字字符串,例如 '2'
, ToNumber
会将其转换为相应的数字 2
。
底线:s.charAt('a')
与 s.charAt(0)
相同,因为 'a'
不能转换为整数。
关于javascript - 传入字符串作为参数时,string.charAt() 是如何工作的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8112391/