(クロムJSコンソールから異なる結果)両方のでnode.jsのparseIntを使用して奇妙な結果が得られるのはなぜですか?私はちょうどことに気づい
//IN CHROME JS CONSOLE
parseInt("03010123"); //prints: 301
//IN NODE.JS
parseInt("03010123"); //prints: 790611
がV8に基づいているが、なぜ同じ操作異なる結果をもたらします?
(クロムJSコンソールから異なる結果)両方のでnode.jsのparseIntを使用して奇妙な結果が得られるのはなぜですか?私はちょうどことに気づい
//IN CHROME JS CONSOLE
parseInt("03010123"); //prints: 301
//IN NODE.JS
parseInt("03010123"); //prints: 790611
がV8に基づいているが、なぜ同じ操作異なる結果をもたらします?
parseIntに渡される文字列の先頭に0があり、radixパラメータを省略すると、未定義の動作が発生します。
上記の文字列の基数を表す整数。読者の混乱を避け、予測可能な動作を保証するために、常にこのパラメータを指定してください。基数が指定されていない場合、実装によって異なる結果が生成されます。
ベース10にベース8、および一部の一部のブラウザのデフォルト私はドキュメントがノードについて言うかわからないんだけど、基数8の3010123
がベース10
790611
あるので、はっきりそれは、ベース8を想定しています
あなたは使いたいでしょう:ノードの
parseInt("03010123", 10);
thats it!ありがとう。このリンクを参考にして回答を改善してください:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt – renatoargh
@RenatoGama - done - ありがとう。 –
また、代わりにNumber()を使用することもできます。 – Kiddo
http://code.google.com/p/v8/issues/detail?id=1645 –
バージョンは何?私はそれを再現することはできません。 – Blender
@Blender v0.8.18 – renatoargh