ใช้ parseInt() แปลงสตริงเป็นจำนวนเต็ม คืน NaN ถ้าแปลงไม่ได้
ตัวอย่างจากบทความ
<!DOCTYPE html>
<html>
<body>
<button onclick="display()">Check</button>
<p id="demo"></p>
<script>
function display() {
var val1 = parseInt("50") + "<br>";
var val2 = parseInt("52.40") + "<br>";
var val3 = parseInt(" 75 ") + "<br>";
var res = val1 + val2 + val3;
document.getElementById("demo").innerHTML = res;
}
</script>
</body>
</html>
ไวยากรณ์ parseInt()
parseInt(string, radix)
string - สตริงที่ต้องการแปลง
radix - ฐานเลข (2-36) ควรระบุเสมอ (ค่าเริ่มต้นไม่ใช่ 10 เสมอไป)
พฤติกรรมสำคัญ
| Input | parseInt() | คำอธิบาย |
| "50" | 50 | ปกติ |
| "52.40" | 52 | ตัดทศนิยม (ไม่ปัด) |
| " 75 " | 75 | ตัด whitespace นำหน้า/ท้าย |
| "abc" | NaN | ไม่ใช่ตัวเลข |
| "10px" | 10 | อ่านจนกว่าจะเจอตัวอักษร |
| "0xFF" | 255 | Hex (ถ้าไม่ระบุ radix) |
| "010" | 10 หรือ 8 | ขึ้นอยู่กับ implementation (legacy octal) |
สำคัญ: ระบุ Radix เสมอ
parseInt("10", 10); // 10 (ฐาน 10 - ปกติ)
parseInt("10", 2); // 2 (ฐาน 2 - binary)
parseInt("10", 8); // 8 (ฐาน 8 - octal)
parseInt("10", 16); // 16 (ฐาน 16 - hex)
parseInt("FF", 16); // 255
// ไม่ระบุ radix - อาจตีความเป็น octal ในบางกรณี (legacy)
parseInt("010"); // 10 (modern) หรือ 8 (legacy)
วิธีแปลงสตริงเป็นตัวเลขอื่นๆ
1. parseFloat() - สำหรับทศนิยม
parseFloat("52.40"); // 52.4
parseFloat("3.14"); // 3.14
2. Number() - แปลงแบบเข้มงวด
Number("50"); // 50
Number("52.40"); // 52.4
Number(" 75 "); // 75
Number("10px"); // NaN (เข้มงวดกว่า parseInt)
Number(""); // 0
Number(null); // 0
3. Unary Plus (+) - Shortcut
+"50"; // 50
+"52.40"; // 52.4
+" 75 "; // 75
+"10px"; // NaN
4. Bitwise OR (| 0) - Fast Integer Conversion
"50" | 0; // 50
"52.9" | 0; // 52 (truncate)
"abc" | 0; // 0
// เร็วแต่จำกัดที่ 32-bit signed integer (-2^31 to 2^31-1)
การจัดการ Error
function safeParseInt(str, defaultValue = 0) {
const result = parseInt(str, 10);
return isNaN(result) ? defaultValue : result;
}
safeParseInt("50"); // 50
safeParseInt("abc"); // 0 (default)
safeParseInt("abc", -1); // -1 (custom default)
สรุป: เลือกใช้ไหน?
| ฟังก์ชัน | เหมาะสำหรับ | คืน NaN เมื่อ |
| parseInt(str, 10) | Integer จากสตริงที่อาจมีหน่วย (px, em) | ไม่มีตัวเลขนำหน้า |
| parseFloat(str) | Decimal number | ไม่มีตัวเลขนำหน้า |
| Number(str) | Strict conversion, ทุกชนิด | ไม่ใช่ตัวเลขสมบูรณ์ |
| +str | Shortcut สำหรับ Number() | เหมือน Number() |