Hàm số (phần 2)

Sử dụng biến arguments

Khi sử dụng hàm với số lượng tham số tùy ý có thể sử dụng biến arguments.
Biến arguments của hàm được tạo ra là một đối tượng giống như mảng. Biến arguments[i] được truy cập để lấy từng phần tử của arguments và sử dụng arguments.length để lấy số lượng các tham số.

1
2
3
4
5
6
function myConcat() {
  for (i = 0; i < arguments.length; i++) {
    console.log(arguments[i]);
  }
}
myConcat('elephant', 'giraffe', 'lion', 'cheetah');

Rest parameters

Cú pháp rest parameter cho phép chúng ta biểu diễn số lượng tham số không xác định dưới dạng một mảng. Cách này là cách mới hơn cách sử dụng biến arguments ở trên.

1
2
3
4
5
6
7
function multiply(multiplier, ...theArgs) {
  console.log(theArgs); // [1,2,3]
  return theArgs.map(x => multiplier * x); // sử dụng hàm mũi tên
}

var arr = multiply(2, 1, 2, 3);
console.log(arr); // [2, 4, 6]

Tham số mặc định

Trước ECMAScript 2015 kiểm tra sử dụng typeof.

1
2
3
4
5
6
7
function multiply(a, b) {
  b = (typeof b) !== 'undefined' ?  b : 1;

  return a * b;
}

multiply(5); // 5

Từ ECMAScript 2015 có thể sử dụng đơn giản như sau:

1
2
3
4
function multiply(a, b = 1) {
  return a * b;
}
multiply(5); // 5