Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Thiết lập Default Parameter cho Function JavaScript


Default parameters (ES6) xử lý tham số function dễ dàng. Cho phép khởi tạo tham số với giá trị mặc định nếu không truyền hoặc truyền undefined.

Ví dụ

<html>
  <body>
    <script>
      // default inc = 1
      function inc(val1, inc = 1) {
        return val1 + inc;
      }
      document.write(inc(10, 10)); // 20
      document.write("<br>");
      document.write(inc(10));     // 11 (inc mặc định = 1)
    </script>
  </body>
</html>

Cú pháp & Đặc điểm

function name(param1 = defaultValue1, param2 = defaultValue2) { ... }
  • Default value có thể là bất kỳ expression nào: literal, biến, function call, object, array.
  • Được evaluate mỗi lần gọi function (không phải lúc define).
  • Truyền undefined explicit → trigger default. Truyền null → không trigger default.
  • Có thể tham chiếu tham số trước: function f(a = 1, b = a + 1) {}.

Ví dụ nâng cao

// Function call as default
function fetchData(url, timeout = getDefaultTimeout()) { ... }

// Object/Array default (cẩn thận shared reference!)
function addItem(item, list = []) { // ❌ Bug: same array shared across calls
  list.push(item);
  return list;
}
function addItemFixed(item, list = null) { // ✅
  if (!list) list = [];
  list.push(item);
  return list;
}

// Destructuring với default
function connect({ host = "localhost", port = 8080, secure = false } = {}) {
  // config object với defaults
}

Default Parameters vs Arguments Object

arguments object không phản ánh default parameters (luôn chứa args thực tế truyền vào). Dùng rest parameters ...args thay thế.

Best Practice

  • Luôn đặt default parameters ở cuối danh sách tham số.
  • Dùng null + check thay vì array/object literal trực tiếp làm default (tránh shared mutable state).
  • Destructuring params object cho API phức tạp (>3-4 params).
  • TypeScript: function f(x: number = 10): number.