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

Function Overloading ใน JavaScript คืออะไร

JavaScript ไม่รองรับ Function Overloading แบบดั้งเดิม (หลายฟังก์ชันชื่อเดียวกัน แตกต่างพารามิเตอร์) หากประกาศฟังก์ชันชื่อซ้ำ ตัวหลังจะทับตัวก่อน

ตัวอย่างที่ไม่ทำงาน

function funcONE(x, y) { return x * y; }
function funcONE(z) { return z; }

// เรียกใช้
funcONE(5);     // 5 (เรียกตัวที่ 2)
funcONE(5, 6);  // 5 (ยังคงเรียกตัวที่ 2! ไม่ได้คูณ)

JavaScript ดูแค่ชื่อฟังก์ชัน ไม่ดู Signature (จำนวน/ชนิดพารามิเตอร์)

วิธีจำลอง Overloading (Pattern ทั่วไป)

1. ตรวจสอบ arguments.length / typeof

function funcONE(a, b) {
  if (b === undefined) {
    return a; // 1 argument
  }
  return a * b; // 2 arguments
}

funcONE(5);     // 5
funcONE(5, 6);  // 30

2. ใช้ Rest Parameters + Logic

function funcONE(...args) {
  if (args.length === 1) return args[0];
  if (args.length === 2) return args[0] * args[1];
  throw new Error("Invalid arguments");
}

3. ใช้ Object Parameter (Options Object)

function funcONE(options) {
  const { x, y, z } = options;
  if (y !== undefined) return x * y;
  if (z !== undefined) return z;
  return x;
}

funcONE({ x: 5 });        // 5
funcONE({ x: 5, y: 6 });  // 30
funcONE({ z: 10 });       // 10

4. Default Parameters (ES6)

function funcONE(x, y = null) {
  return y !== null ? x * y : x;
}

สรุป: JavaScript ใช้ "Single Function + Logic ภายใน" แทน Overloading จริง วิธี Options Object อ่านง่ายและขยายง่ายที่สุด