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

ความแตกต่างระหว่าง Default และ Rest Parameters ใน JavaScript

Default Parameters และ Rest Parameters เป็นฟีเจอร์ ES6 ที่แก้ปัญหาพารามิเตอร์ต่างกัน

Default Parameters (พารามิเตอร์เริ่มต้น)

กำหนดค่าเริ่มต้นให้พารามิเตอร์ ใช้เมื่อไม่ได้ส่งอาร์กิวเมนต์ หรือส่ง undefined

<html>
  <body>
    <script>
      function inc(val1, inc = 1) {
        return val1 + inc;
      }
      document.write(inc(10, 10)); // 20
      document.write("<br>");
      document.write(inc(10));     // 11
    </script>
  </body>
</html>

Rest Parameters (พารามิเตอร์ส่วนที่เหลือ)

รวมอาร์กิวเมนต์ที่เหลือทั้งหมดไว้ใน อาร์เรย์จริง (Array) ใช้ ... นำหน้าพารามิเตอร์ตัวสุดท้าย

<html>
  <body>
    <script>
      function addition(...numbers) {
        var res = 0;
        numbers.forEach(function(number) {
          res += number;
        });
        return res;
      }
      document.write(addition(3));           // 3
      document.write("<br>");
      document.write(addition(5, 6, 7, 8, 9)); // 35
    </script>
  </body>
</html>

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

คุณสมบัติDefault ParametersRest Parameters
ไวยากรณ์param = defaultValue...paramName
วัตถุประสงค์ให้ค่าเริ่มต้นเมื่อไม่ส่งมารวมอาร์กิวเมนต์ที่เหลือเป็นอาร์เรย์
ตำแหน่งทุกตำแหน่ง (แต่หลัง default ต้องเป็น default ต่อไป)ต้องเป็นตัวสุดท้ายเท่านั้น
ชนิดข้อมูลค่าของพารามิเตอร์นั้นๆArray
arguments objectไม่เกี่ยวข้องแทน arguments object (ซึ่งไม่ใช่ Array จริง)
Destructuringรองรับรองรับ (...[a, b, c])

ใช้ร่วมกันได้

function foo(required, optional = "default", ...rest) {
  console.log(required, optional, rest);
}

foo(1);              // 1, "default", []
foo(1, 2);           // 1, 2, []
foo(1, 2, 3, 4, 5);  // 1, 2, [3, 4, 5]