js中在將字串數字轉為數字時,使用哪種方式更安全

龙陌發表於2024-11-26

在 JavaScript 中,將字串數字轉換為數字時,有幾種常見的方法,但每種方法都有其適用場景和潛在的風險。為了確保轉換的安全性和準確性,建議使用以下方法:

1. Number 建構函式

Number 建構函式是最直接和安全的方法之一,它可以處理各種數字格式,包括整數、浮點數和科學計數法。

const str = "123.45";
const num = Number(str);
console.log(num); // 123.45

2. parseFloatparseInt

parseFloatparseInt 用於解析浮點數和整數,但需要注意它們會忽略字串中非數字部分,這可能會導致意外的結果。

const str1 = "123.45";
const num1 = parseFloat11);
console.log(num1); // 123.45

const str2 = "123.45abc";
const num2 = parseFloat(str2);
console.log(num2); // 123.45

const str3 = "123abc";
const num3 = parseInt(str3);
console.log(num3); // 123

3. + 運算子

+ 運算子可以將字串轉換為數字,但需要注意它會將空字串轉換為 0,並且對非數字字串會返回 NaN

const str1 = "123.45";
const num1 = +str1;
console.log(num1); // 123.45

const str2 = "";
const num2 = +str2;
console.log(num2); // 0

const str3 = "abc";
const num3 = +str3;
console.log(num3); // NaN

4. Number.parseIntNumber.parseFloat

Number.parseIntNumber.parseFloatparseIntparseFloat 的更安全版本,因為它們是靜態方法,不會被覆蓋。

const str1 = "123.45";
const num1 = Number.parseFloat(str1);
console.log(num1); // 123.45

const str2 = "123abc";
const num2 = Number.parseInt(str2);
console.log(num2); // 123

5. Number 建構函式與 isNaN 檢查

為了確保轉換的安全性,可以結合 Number 建構函式和 isNaN 檢查來處理無效的輸入。

const str1 = "123.45";
const num1 = Number(str1);
if (!isNaN(num1)) {
  console.log(num1); // 123.45
} else {
  console.log("Invalid number");
}

const str2 = "abc";
const num2 = Number(str2);
if (!isNaN(num2)) {
  console.log(num2);
} else {
  console.log("Invalid number"); // Invalid number
}

總結

  • 推薦使用 Number 建構函式,因為它是最直接和安全的方法,可以處理各種數字格式。
  • 如果需要解析浮點數或整數,可以使用 Number.parseFloatNumber.parseInt
  • 使用 + 運算子時需要注意空字串和非數字字串的處理。
  • 結合 isNaN 檢查可以確保輸入的有效性。

相關文章