parseIntの使い方の戻り値

[上に] [前に] [次に]
ドラエモン 1998/08/13(木) 10:13:45
JavaScriptで
parseIntを使いました
str1 = "12345";
str2 = "abc";

n1 = parseInt(str1);
n2 = parseInt(str2);

とやりました。
すると
n1 = 12345
n2 = NaN

となりました。

ここまではわかるんですけど

if( n2 == NaN)
とやるとエラーになってしまうのですがどうしてでしょう?
まだ初心者なのでやってることが変かもしれませんが、
回答をお願いします。

ドラエモン 1998/08/13(木) 10:15:03
ちょっとタイトル変ですね・・・

hiro-kim 1998/08/17(月) 18:10:25
if (n2 == NaN) という書き方では,
  ・右辺のNaNが変数名と見なされてしまうこと
  ・n2を表示したときの値:NaNはある内部状態であって,"NaN"という文字列ではないこと
が原因のようです。

n2の値を適当な?進数文字列に変換して文字列同士で比較する例1なら正常動作しました。(当方,Explorer4で動作確認しました)

<html><body>
<script language="JavaScript">
n2 = parseInt("abc");

if (n2.toString(2) == "NaN")    // 例1
document.write("Not a Number<br>");

if (isNaN(n2))                  // 例2
document.write("Not a Number<br>");
</script>
</body></html>

例2はスマートですが,Netscape4,Explorer4でしか正常動作しないそうです。

ドラエモン 1998/08/18(火) 09:52:42
[[解決]]
ありがとうございます。
またなにかあったらよろしくおねがいします。

[上に] [前に] [次に]