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

[50,100] แปลงเป็น Number ใน JavaScript ผลลัพธ์คืออะไร?

ใช้ Number() แปลง Array [50, 100] เป็น Number จะได้ NaN

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

<!DOCTYPE html>
<html>
  <body>
    <p>Convert [50,100] to Number</p>
    <script>
      var myVal = [50, 100];
      document.write("Number: " + Number(myVal)); // ผลลัพธ์: NaN
    </script>
  </body>
</html>

คำอธิบาย Mechanism (ToPrimitive)

  1. Number([50, 100]) → เรียก [50,100].valueOf() → คืน Array (Object)
  2. → เรียก [50,100].toString() → "50,100" (Join ด้วย Comma)
  3. → Number("50,100") → NaN (Comma ไม่ใช่ Valid Number Format)

Array → Number Conversion Table

ArraytoString()Number()Boolean()
[]""0true
[50]"50"50true
[50, 100]"50,100"NaNtrue
["hello"]"hello"NaNtrue

วิธีแปลง Array เป็น Number ที่มีความหมาย

// Single Element Array
Number([42])           // 42
Number([3.14])         // 3.14

// Multiple Elements → NaN (ใช้ Reduce/Join แทน)
[1, 2, 3].reduce((a, b) => a + b)  // 6
[10, 20].join('')                    // "1020" → Number: 1020

// Check ก่อนแปลง
const arr = [50, 100];
const num = arr.length === 1 ? Number(arr[0]) : NaN;

สรุป: Array หลาย Element → Number = NaN (เพราะ toString() ใส่ Comma) — ควร Handle แยกต่างหาก