Đối tượng arguments ECMAScript
- Trang trước Giới thiệu về hàm
- Trang tiếp theo Đối tượng Function
Đối tượng arguments
Trong mã hàm của hàm, người phát triển sử dụng đối tượng đặc biệt argumentsKhông cần phải chỉ ra tên tham số rõ ràngvà có thể truy cập chúng.
Ví dụ, trong hàm sayHi(), tham số đầu tiên là message. Bạn cũng có thể truy cập giá trị này bằng arguments[0], tức là giá trị của tham số đầu tiên (tham số đầu tiên nằm ở vị trí 0, tham số thứ hai nằm ở vị trí 1, và thế tiếp theo).
Vì vậy, không cần phải đặt tên rõ ràng cho tham số, bạn vẫn có thể viết lại hàm:
function sayHi() { if (arguments[0] == "bye") { return; } alert(arguments[0]); }
Kiểm tra số lượng tham số
Cũng có thể sử dụng đối tượng arguments để kiểm tra số lượng tham số của hàm, bằng cách tham chiếu thuộc tính arguments.length.
Mã dưới đây sẽ xuất ra số lượng tham số được sử dụng mỗi khi gọi hàm:
function howManyArgs() { alert(arguments.length); } howManyArgs("chuỗi", 45); howManyArgs(); howManyArgs(12);
Mã trên sẽ hiển thị theo thứ tự "2", "0" và "1".
Ghi chú:Khác với các ngôn ngữ lập trình khác, ECMAScript sẽ không xác thực số lượng tham số được truyền vào hàm có bằng số lượng tham số được định nghĩa trong hàm hay không. Tất cả các hàm được định nghĩa bởi nhà phát triển đều có thể chấp nhận số lượng tham số bất kỳ (theo tài liệu của Netscape, tối đa có thể chấp nhận 255 tham số), mà không gây ra lỗi nào. Bất kỳ tham số bị bỏ sót nào sẽ được truyền vào hàm dưới dạng undefined, và các tham số dư sẽ bị bỏ qua.
Mô phỏng tải lại hàm
Sử dụng đối tượng arguments để xác định số lượng tham số được truyền vào hàm, từ đó mô phỏng tải lại hàm:
function doAdd() { if(arguments.length == 1) { alert(arguments[0] + 5); } else if(arguments.length == 2) { alert(arguments[0] + arguments[1]); } } doAdd(10); // Xuất ra "15" doAdd(40, 20); // Xuất ra "60"
Khi chỉ có một tham số, hàm doAdd() sẽ thêm 5 vào tham số. Nếu có hai tham số, nó sẽ cộng hai tham số lại và trả về tổng của chúng. Do đó, doAdd(10) sẽ xuất ra "15", trong khi doAdd(40, 20) sẽ xuất ra "60".
Mặc dù không tốt bằng việc tải lại, nhưng đã đủ để tránh giới hạn của ECMAScript này.
- Trang trước Giới thiệu về hàm
- Trang tiếp theo Đối tượng Function