dポイントプレゼントキャンペーン実施中!

parseIntを使って文字列型から数字だけを抜き出して数値型へ変換したいのですが、
下記のようにNaNになってしまいます。何が悪いのでしょうか。

<html lang="ja">
<head>
<title></title>
</head>
<body>
<script>
var a = "100点満点"
var b = parseInt('a',10);
document.write('typeof a ⇒ '+typeof a+'<br>');
document.write('var b = parseInt("a",10); ⇒ '+b+'<br>');
document.write('typeof b ⇒ '+typeof b+'<br>');
</script>
</body>
</html>

上記の結果は、
---------------------------------
typeof a ⇒ string
var b = parseInt("a"); ⇒ NaN
typeof b ⇒ number
---------------------------------

A 回答 (2件)

'a'なんていう10進数は存在しませんから。


var b = parseInt('a',16);
であれば,'a'を16進数と解釈して,その10進表記である 10 が正しく表示されます。

var b = parseInt('a',10);
parseInt()の戻り値に対応して,変数bのデータ型はnumber型になりました。'a'という10進数は存在しませんから結果的にその数値変換は失敗してNaNが格納されましたが,変数bのデータ型がnumberであることは変わりません。
逆に言うと,typeof b が number であるから変数bには正しく数値が格納されているはず,という考えは間違っています。
    • good
    • 0
この回答へのお礼

aという文字を変換する場合、10進数にない文字なので無理、16進数にはその文字があるからOKということですね。参考になりました。有難うございました。

お礼日時:2011/12/15 00:05

NaN は Not a Number の事なので


それがわかれば、何が悪いのかはわかるかと。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2011/12/15 00:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!