理解字串到數字轉換中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中將字串轉換為數字時做出明智的決定,確保結果準確可靠。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3