どうやってparseInt()
そしてNumber()
文字列を数値に変換するときに動作が異なりますか?
ベストアンサー1
まあ、意味的には違いますが、Number
関数として呼び出されるコンストラクタ型変換を実行し、parseInt
解析を実行します。例:
// parsing:
parseInt("20px"); // 20
parseInt("10100", 2); // 20
parseInt("2e1"); // 2
// type conversion
Number("20px"); // NaN
Number("2e1"); // 20, exponential notation
また、parseInt
現在使用されている基数のどの数字にも対応しない末尾の文字も無視されます。
コンストラクNumber
ターは暗黙の 8 進数を検出しませんが、明示的な 8 進表記を検出できます。
Number("010"); // 10
Number("0o10") // 8, explicit octal
parseInt("010"); // 8, implicit octal
parseInt("010", 10); // 10, decimal radix used
また、次のように 16 進表記の数値も処理できますparseInt
。
Number("0xF"); // 15
parseInt("0xF"); //15
さらに、数値型の変換を実行するために広く使用されている構造は、単項+
演算子 (p. 72)Number
は、コンストラクタを関数として使用するのと同じです。
+"2e1"; // 20
+"0xF"; // 15
+"010"; // 10