Default parameters มาจัดการ function parameters ให้สะดวก อนุญาตให้ initialize formal parameters ด้วย default values ได้ก็ต่อเมื่อไม่มีค่าหรือ undefined ถูกส่งมา ด้วย ES6 สามารถตั้ง default parameters ได้ง่าย
ตัวอย่าง
<html>
<body>
<script>
// default is set to 1
function inc(val1, inc = 1) {
return val1 + inc;
}
document.write(inc(10, 10));
document.write("<br>");
document.write(inc(10));
</script>
</body>
</html>
โค้ดต่อไปนี้ทำงานถูกต้อง แสดงการทำงานของ parameters จากซ้ายไปขวา Overwrite default parameters ได้แม้ parameters เพิ่มมาหลังจากที่ไม่มี default
ตัวอย่าง
<html>
<body>
<script>
function display(val1 = 10, val2) {
return [val1, val2];
}
document.write(display()); // [10, undefined]
document.write(display(20)); // [20, undefined]
</script>
</body>
</html>
คำอธิบาย
- Parameters ที่มี default value สามารถอยู่ ก่อน parameters ที่ไม่มี default ได้
- แต่ถ้าเรียกฟังก์ชันโดยไม่ส่ง argument สำหรับ parameter ที่ไม่มี default จะได้
undefined - Parameter ที่ไม่มี default แต่อยู่หลัง default parameter — เรียกว่า "parameters without defaults after default parameters"
Best Practices
// แนะนำ: ใส่ required parameters ก่อน optional parameters
function greet(name, greeting = "Hello") { // OK
return `${greeting}, ${name}!`;
}
// หลีกเลี่ยง: optional ก่อน required (สับสน)
function greet(greeting = "Hello", name) { // Confusing
return `${greeting}, ${name}!`;
}
// เรียก: greet("John") → greeting="John", name=undefined ❌
// เรียก: greet(undefined, "John") → greeting="Hello", name="John" ✅ แต่แปลก