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

เกิดอะไรขึ้นเมื่อแปลงอาร์เรย์ ["demo"] เป็น Number ใน JavaScript

บทนำ

เมื่อใช้ Number() แปลงอาร์เรย์ (Array) ใน JavaScript ผลลัพธ์จะขึ้นอยู่กับเนื้อหาในอาร์เรย์

ตัวอย่างโค้ด

<!DOCTYPE html>
<html>
<body>
  <p>แปลง ["demo"] เป็น Number</p>
  <script>
    var myVal = ["demo"];
    document.write("Number: " + Number(myVal));
  </script>
</body>
</html>

ผลลัพธ์

Number: NaN

คำอธิบาย

  • JavaScript จะพยายามแปลงอาร์เรย์เป็น string ก่อนโดยใช้ toString() ซึ่งจะรวม elements ด้วย comma
  • ["demo"].toString() → "demo"
  • จากนั้นแปลง string "demo" เป็น Number → NaN (เพราะไม่ใช่ตัวเลข)

ตารางเปรียบเทียบการแปลง Array

ArraytoString()Number()
[]""0
[5]"5"5
["5"]"5"5
["demo"]"demo"NaN
[1,2]"1,2"NaN
[null]""0
[undefined]""0

หลักการสำคัญ

  • อาร์เรย์ว่าง [] → 0
  • อาร์เรย์มี 1 element ที่เป็นตัวเลข/ตัวเลขใน string → ตัวเลขนั้น
  • อาร์เรย์มี 1 element ที่ไม่ใช่ตัวเลข → NaN
  • อาร์เรย์มีหลาย element → NaN (เพราะ string มี comma)