2011-11-13 12 views
3

the MDN JS Docによれば、charAtメソッドは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に記載されている。そこには、(poscharAtに渡されたパラメータである)が表示されます:

(...)
3. 位置がToInteger(POS)ことしてみましょう。
(...)

ToIntegerSection 9.4で説明されています

  1. は、入力引数にはToNumberを呼び出した結果とします。
  2. 数字NaNの場合は、となります。
    (...)

'a'は、数値、文字列ではなく、したがって(Section 9.3.1を参照)、次に0をもたらすので、ToNumberNaNが返される数値に変換することができません。

'2'などの有効な数値文字列を渡すと、ToNumberは対応する数字の2に変換されます。


ボトムライン:'a'を整数に変換することができないため

s.charAt('a')は、s.charAt(0)と同じです。

+0

私はあなたの答えを更新し、上の票が飛んでくるのを見ます – david

関連する問題