Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ความแตกต่างระหว่าง parseInt(string) และ Number(string) ใน JavaScript

parseInt(string)

แปลงสตริงเป็นจำนวนเต็ม โดย อ่านจากซ้ายไปขวา จนกว่าจะเจอตัวอักษรที่ไม่ใช่ตัวเลข แล้วหยุดและคืนค่าที่อ่านได้

parseInt("765world")   // 765 (หยุดที่ 'w')
parseInt("50px")       // 50 (หยุดที่ 'p')
parseInt("  100  ")    // 100 (ข้าม whitespace)
parseInt("10.5")       // 10 (หยุดที่ '.')
parseInt("abc")        // NaN (ตัวแรกไม่ใช่ตัวเลข)
parseInt("0xFF")       // 255 (hex prefix)

แนะนำระบุ radix (ฐาน) เสมอ: parseInt("10", 10) ป้องกันการตีความเป็น octal/hex

Number(string)

แปลงสตริงทั้งหมดเป็นตัวเลข (รองรับ float) ถ้าสตริงมีตัวอักษรไม่ใช่ตัวเลข แค่ตัวเดียว ก็คืน NaN

Number("765world")   // NaN
Number("50px")       // NaN
Number("10.5")       // 10.5 (รองรับทศนิยม)
Number("  100  ")    // 100
Number("")           // 0 (empty string -> 0)
Number("0xFF")       // 255 (hex)
Number(true)         // 1
Number(false)        // 0
Number(null)         // 0

ตารางเปรียบเทียบ

InputparseInt()Number()
"42"4242
"3.14"33.14
"100px"100NaN
"abc"NaNNaN
""NaN0
"0x10"16 (or 0 without radix)16

สรุปเมื่อไหร่ใช้ไหน

  • parseInt: แปลงค่าที่อาจมีหน่วย/ขยะต่อท้าย (เช่น CSS "50px", "100%")
  • Number: แปลงค่าที่คาดหวังเป็นตัวเลขบริสุทธิ์ (form input, JSON parsing)
  • parseFloat: ต้องการทศนิยมและอาจมีหน่วยต่อท้าย