SyntaxError: getter functions must have no arguments

Ngoại lệ JavaScript "getter functions must have no arguments" xảy ra khi một getter được khai báo với danh sách tham số không rỗng.

Thông báo

SyntaxError: Getter must not have any formal parameters. (V8-based)
SyntaxError: getter functions must have no arguments (Firefox)
SyntaxError: Unexpected identifier 'x'. getter functions must have no parameters. (Safari)

Loại lỗi

SyntaxError

Nguyên nhân?

Cú pháp thuộc tính get trông giống một hàm, nhưng nó có quy tắc chặt chẽ hơn và không phải mọi cú pháp hàm đều được phép. Getter luôn được gọi mà không có đối số, vì vậy việc định nghĩa nó với bất kỳ tham số nào hầu như đều là lỗi.

Lưu ý rằng lỗi này chỉ áp dụng cho các getter thuộc tính sử dụng cú pháp get. Nếu bạn định nghĩa getter bằng Object.defineProperty() hoặc tương tự, getter được định nghĩa như một hàm thông thường — dù như vậy, việc getter mong đợi đối số nào vẫn có khả năng là lỗi, vì nó sẽ được gọi mà không có đối số nào.

Ví dụ

Trường hợp không hợp lệ

js
const obj = {
  get value(type) {
    return type === "string" ? String(Math.random()) : Math.random();
  },
};

Trường hợp hợp lệ

js
// Xóa tham số
const obj = {
  get value() {
    return Math.random();
  },
};

// Dùng phương thức thông thường nếu bạn cần tham số
const obj = {
  getValue(type) {
    return type === "string" ? String(Math.random()) : Math.random();
  },
};

Xem thêm