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

Rest และ Spread Operators ใน JavaScript

Rest Operator (...) ช่วยรับ arguments จำนวนไม่จำกัดเป็น Array และใช้ใน Destructuring ได้
Spread Operator (...) ช่วยขยาย Iterable (Array, Object) ให้เป็น Element ตัวเดี่ยว

ตัวอย่าง

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Rest and Spread Operators</title>
  <style>
    body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
    .sample, .result { font-size: 20px; font-weight: 500; }
  </style>
</head>
<body>
  <h1>JavaScript Rest and Spread Operator</h1>
  <div class="sample"></div>
  <div style="color: green;" class="result"></div>
  <button class="btn">Spread Operator</button>
  <h3> Click to concatenate arrays using spread operator </h3>
  <button class="btn">Rest Operator</button>
  <div style="color: green;" class="result"></div>
  <h3> Click to add numbers using rest operator </h3>
  <script>
    let sampleEle = document.querySelector(".sample");
    let btnEle = document.querySelectorAll(".btn");
    let resEle = document.querySelectorAll(".result");
    let arr = [2, 3, 4, 5];
    let arr1 = ["a", "b", "c", "d"];
    sampleEle.innerHTML = "arr = " + arr + "<br> arr1 = " + arr1;

    // Rest Operator
    function addArr(num, ...ar) {
      let sum = num;
      ar.forEach(item => sum += item);
      resEle[1].innerHTML = "Sum of elements = " + sum;
    }

    // Spread Operator
    btnEle[0].addEventListener("click", () => {
      resEle[0].innerHTML = "Concatenated array = " + [...arr, ...arr1];
    });

    btnEle[1].addEventListener("click", () => {
      addArr(44, 11, 35, 44, 22, 99);
    });
  </script>
</body>
</html>

คำอธิบาย

Spread Operator (...)

  • รวม Array: [...arr, ...arr1] → [2,3,4,5,"a","b","c","d"]
  • คัดลอก Array: const copy = [...arr]
  • สร้าง Object ใหม่: {...obj, newProp: value}

Rest Operator (...)

  • รับ Parameters ไม่จำกัด: function sum(...nums)
  • Destructuring: const [first, ...rest] = arr

ผลลัพธ์

Spread: แสดง Array ที่รวมกัน | Rest: แสดงผลรวมตัวเลขที่ส่งเข้าไป