4

String 変数の値を int/numeric 変数に変換する正しい方法は何ですか? なぜbcIntまだ string で、なぜisNaNreturnなのtrueですか?

bc=localStorage.getItem('bc');
var bcInt=parseInt(bc,10);
var bcInt2=1;
console.log("bc------------>" +bc +" isNaN:" +isNaN(bc)); //isNaN returns true
console.log("bcInt------------>" +bcInt +" isNaN:" +isNaN(bcInt)); //isNaN returns true

bcInt2// isNaN returns false
4

2 に答える 2

9

parseInt最初の文字として数値を渡した場合にのみ、数値を返します。

例:

parseInt( 'a', 10 ); // NaN
parseInt( 'a10', 10 ); // NaN
parseInt( '10a', 10 ); // 10
parseInt( '', 10 ); // NaN
parseInt( '10', 10 ); // 10

また、+数値だけの文字列を取得したい場合は、演算子を調べてください。

+'a'; // NaN
+'a10'; // NaN
+'10a'; // NaN
+''; // 0, that's tricky
+'10'; // 10

編集:あなたのコメントによると、私はテストしましたparseInt

parseInt( '08-20 19:41:02.880', 10 ); // 8

あなたは何か他の間違ったことをしています。parseInt数値でなくなるまですべてを返します。1 番目が数値でない場合 (または数値が見つからない場合)、 を返しますNaN

于 2012-08-20T15:41:29.427 に答える
0

答えは、私が使用localStorage.setItem('bc',JSON.stringify(bc))し、二重引用符を追加しbcたことです。その場合、すでに文字列であり、それが機能しparseIntなかったためです。値は でした""1""

于 2012-08-20T18:50:11.937 に答える