理解字串到數字轉換中parseInt() 和Number() 的細微差別
處理字串到數字時在JavaScript 中進行轉換時,了解parseInt() 和Number() 之間的差異至關重要。這兩種方法在處理字串輸入時表現出不同的行為。
語意差異:解析與型別轉換
parseInt() 執行解析,這表示它解釋一部分將字串視為數字,同時忽略任何不適合指定數字系統的尾字。另一方面,Number() 執行類型轉換,嘗試將整個字串轉換為數值。
範例:
// Parsing parseInt("20px"); // 20 parseInt("10100", 2); // 20 parseInt("2e1"); // 2 // Type conversion Number("20px"); // NaN Number("2e1"); // 20 (exponential notation)
尾隨字元與隱式八進位
parseInt() 忽略尾隨指定基數中忽略尾隨指定基數的數字不對應的字元。但是,Number() 建構函數不會偵測隱式八進位(以 0 為前綴的數字,表示八進位數字系統)。顯式八進位表示法 (0o) 由 Number() 識別。
// Implicit octal detection Number("010"); // 10 Number("0o10") // 8 // Parsed as octal by default parseInt("010"); // 8 parseInt("010", 10); // 10 (force decimal radix)
十六進位表示法和一元加運算子
parseInt() 和Number() 都可以處理十六進位表示法,以0x 前綴開頭的數字。另外,一元加運算子 ( ) 也可以用來進行數值型別轉換,相當於使用 Number() 建構函式。
// Hexadecimal notation Number("0xF"); // 15 parseInt("0xF"); //15 // Unary Plus Operator +"2e1"; // 20 +"0xF"; // 15 +"010"; // 10
透過了解 parseInt() 和 Number() 的具體特點,開發人員在 JavaScript 中將字串轉換為數字時可以做出明智的決定,確保結果準確可靠。
以上是parseInt() 與 Number():它們在字串到數字的轉換方面有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!