Arguments object trong javascript là gì? Cách sử dụng?

9293

Trong ngôn ngữ JavaScript, việc truyền đối số cho function không giống như các ngôn ngữ khác. JavaScript không quan tâm chúng ta truyền vào bao nhiêu đối số, cũng như kiểu dữ liệu của đối số là gì. Chúng ta có thể tạo ra một hàm có hai đối số nhưng chúng ta có thể chỉ truyền vào một đối số hoặc truyền vào ba, bốn, năm…..đối số cũng không có vấn đề gì cả.

Để làm điều nói ở trên, ngôn ngữ lập trình Javascript cung cấp một biến cục bộ (biến theo ngữ cảnh) với tên arguments chứa các tham số được truyền vào hàm.

VD:

function cong(a, b)
{
     alert(arguments[0] + arguments[1]);
}

Đối tượng đối số là một biến cục bộ có sẵn trong tất cả các hàm không phải là mũi tên. Bạn có thể tham chiếu đến các đối số của một hàm bên trong hàm đó bằng cách sử dụng đối tượng đối số của nó. Nó có các mục nhập cho mỗi đối số mà hàm được gọi với, với chỉ mục của mục nhập đầu tiên là 0.

Ví dụ: nếu một hàm được truyền 3 đối số, bạn có thể truy cập chúng như sau:

arguments[0] // first argument
arguments[1] // second argument
arguments[2] // third argument

Mỗi đối số cũng có thể được đặt hoặc chỉ định lại:

arguments[1] = 'new value';

Tuy nhiên, nó có thể chuyển đổi thành Array:

var args = Array.prototype.slice.call(arguments);
// Using an array literal is shorter than above but allocates an empty array
var args = [].slice.call(arguments);

As you can do with any Array-like object, bạn có thể dùng ES2015’s Array.from() hoặc spread syntax để chuyển arguments đến mảng Array:

let args = Array.from(arguments);
// or
let args = [...arguments];

Hàm arguments hữu ích cho các hàm được gọi với nhiều đối số hơn chúng được khai báo chính thức để chấp nhận. Kỹ thuật này hữu ích cho các hàm có thể được truyền một số đối số thay đổi, giống như Math.min(). Ví dụ hàm này chấp nhận bất kỳ số lượng đối số chuỗi nào và trả về đối số dài nhất:

function longestString() {
  var longest = '';
  for (var i=0; i < arguments.length; i++) {
    if (arguments[i].length > longest.length) {
      longest = arguments[i];
    }
  }
  return longest;
}

Bạn có thể dùng arguments.length để đếm có bao nhiêu đối số mà hàm được gọi với. Thay vào đó, nếu bạn muốn đếm số lượng tham số mà một hàm được khai báo để chấp nhận, hãy kiểm tra hàm length.

Tham khảo chi tiết thêm tại đây!

Cập nhật tin tuyển dụng Javascript mới nhất tại Topdev.vn