2011-11-13 112 views
3

根據the MDN JS DoccharAt方法需要integer並返回索引處的字符。並且當字符串作爲參數傳遞時,string.charAt()如何工作?

如果您提供的索引超出範圍,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 

有沒有人有一個線索,這是如何發生?

回答

9

該算法在說明書中的Section 15.5.4.4中描述。在那裏,你會看到(pos傳遞給charAt參數):

(...)
3.讓位置是ToInteger(POS)。
(...)

ToIntegerSection 9.4描述:

  1. 是調用ToNumber對輸入參數的結果。
  2. If number is NaN,return +0
    (...)

'a'不是一個數字串,因此不能被轉換爲一個數字,所以ToNumber將返回NaN(見Section 9.3.1),這隨後導致0

另一方面,如果你傳遞一個有效的數字串,如'2'ToNumber將其轉換爲相應的數字,2


底線:

s.charAt('a')相同s.charAt(0),因爲'a'不能轉換爲整數。

+0

我看到你更新了你的答案,並且最多的選票來了 – david

相關問題