根据 the MDN JS DoccharAt 方法接受 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 的参数):


ToIntegerSection 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/

10-11 06:24