Hướng dẫn arguments length javascript

The arguments.length property contains the number of arguments passed to the function.

Description

The arguments.length property provides the number of arguments actually passed to a function. This can be more or less than the defined parameter's count (see Function.prototype.length). For example, for the function below:

function func1(a, b, c) {
  console.log(arguments.length);
}

func1.length returns 3, because func1 declares three formal parameters. However, func1(1, 2, 3, 4, 5) logs 5, because func1 was called with five arguments. Similarly, func1(1) logs 1, because func1 was called with one argument.

Examples

Using arguments.length

In this example, we define a function that can add two or more numbers together.

function adder(base /*, num1, …, numN */) {
  base = Number(base);
  for (let i = 1; i < arguments.length; i++) {
    base += Number(arguments[i]);
  }
  return base;
}

Specifications

Specification
ECMAScript Language Specification
# sec-arguments-exotic-objects

Browser compatibility

BCD tables only load in the browser

See also

Hướng dẫn cách sử dụng arguments object trong javascript. Bạn sẽ học được cách sử dụng arguments để lấy các giá trị đã truyền vào hàm, cũng như các chú ý khi sử dụng arguments object trong javascript sau bài học này.

  • Bài liên quan: Function trong JavaScript với cách tạo và gọi hàm.
  • Bài liên quan: Truyền tham số vào hàm trong JavaScript

Arguments object là gì trong javascript

Arguments trong JavaScript (dịch sang tiếng việt là các đối số) là một đối tượng có tính chất giống như mảng trong JavaScript, có khả năng truy cập được vào bên trong hàm và chứa các giá trị của các đối số đã được truyền cho hàm đó.

Nói nôm na thì arguments chính là một mảng chứa các đối số đã truyền vào hàm trong JavaScript.

Ví dụ chúng ta có hàm tính tổng sau đây:

function sum(a,b,c){
return a + b + c;
}

Giả sử chúng ta gọi hàm và truyền 3 đối số vào hàm như sau:

sum(10,20,30);

Sau khi gọi hàm, các đối số đã truyền vào hàm là 10, 2030 sẽ được lưu vào arguments theo thứ tự, và chúng ta có thể lấy chúng ra tương tự như khi sử dụng mảng, ví dụ như arguments[0] = 10, arguments[1] = 20, arguments[2] = 30 chẳng hạn.

Lưu ý là chúng ta chỉ có thể sử dụng Arguments object ở bên trong hàm JavaScript mà thôi. Và chúng ta cũng không thể sử dụng Arguments ở bên trong các hàm được tạo ra bởi hàm arrow trong JavaScript.

  • Xem thêm: Arrow function trong JavaScript và cách tạo hàm

Các đối số truyền vào hàm sẽ được lưu giữ theo thứ tự trong Arguments, và chúng ta có thể lấy chúng ra bằng cách truy cập vào các phần tử trong arguments. Chúng ta cũng có thể truy xuất các thuộc tính của arguments object này, ví dụ như số lượng giá trị đã truyền vào hàm thông qua thuộc tính length chẳng hạn.

Arguments object thường được sử dụng trong các hàm mà chúng ta không quyết định số lượng đối số truyền vào hàm, và tất cả các đối số đều được lưu giữ hết trong Arguments mà không cần quan tâm tới số lượng của chúng là bao nhiêu. Tuy nhiên trong các phiên bản JavaScript mới đã được thêm vào Rest parameters với toán tử ba chấm, do đó ngoài Arguments thì chúng ta cũng có thêm lựa chọn khác khi muốn truyền tham số vào hàm trong JavaScript mà không giới hạn số lượng đối số.

  • Xem thêm: Truyền tham số vào hàm trong JavaScript

Sau đây chúng ta sẽ cùng tìm hiểu các cách sử dụng Arguments object trong JavaScript.

Tìm số đối số đã truyền vào hàm bằng Arguments object trong JavaScript

Trong JavaScript, số lượng đối số truyền vào hàm và số lượng tham số dùng để nhận đối số không nhất thiết cần phải giống nhau. Giả sử số đối số truyền vào có lớn hơn số tham số sử dụng trong hàm chăng nữa, thì số đối số thừa sẽ không được sử dụng. Hoặc là nếu số đối số có nhỏ hơn số tham số sử dụng trong hàm, thì giá trị mặc định là undefined cũng sẽ được gán vào tham số, và lỗi cũng sẽ không xảy ra.

  • Xem thêm: Truyền tham số vào hàm trong JavaScript

Giống như thế, khi chúng ta gọi hàm trong JavaScript, số đối số chúng ta truyền vào hàm không nhất định bằng với số tham số chỉ định trong hàm. Trong trường hợp này, chúng ta có thể sử dụng thuộc tính length của Arguments object và tìm số đối số đã truyền vào hàm.

Ví dụ chúng ta tìm số đối số đã truyền vào hàm sau trong JavaScript:

function find_user(name,old){
console.log('arguments.length : ' + arguments.length);
}

find_user('Kiyoshi', 30);


find_user('Honda', 20, 'tokyo');


find_user('Suzuki');

Giống như trên, số lượng đối số thực tế mà chúng ta đã truyền vào hàm sẽ được truy xuất thông qua thuộc tính arguments.length.

Lấy các giá trị truyền vào trong hàm bằng Arguments object trong JavaScript

Giá trị của các đối số truyền vào trong hàm JavaScript sẽ được gán vào các biến có tên (tham số) ở bên trong hàm đó. Tuy nhiên nó cũng còn được lưu giữ một cách riêng biệt trong Arguments object dưới dạng arguments[0],arguments[1]…

Ví dụ chúng ta có thể lấy giá trị truyền vào hàm thông qua Arguments object như sau:

function find_user(name,old){
console.log('name : ' + arguments[0]);
console.log('old : ' + arguments[1]);
}

find_user('Kiyoshi', 30);


Tất nhiên chúng ta có thể lấy giá trị truyền vào hàm thông qua cả tham số lẫn Arguments object như sau:

function find_user(name,old){
console.log('Lấy name bằng arguments : ' + arguments[0]);
console.log('Lấy name bằng tham số : ' + name;
}

find_user('Kiyoshi', 30);


Chúng ta cũng có thể sử dụng arguments trong JavaScript khi cần truyền tham số vào hàm trong JavaScript mà không giới hạn số lượng đối số, do tất cả các đối số này không giới hạn số lượng đều được lưu cả vào trong arguments rồi. Ví dụ:

function find_sum(){
let sum = 0;
for (let i = 0; i < arguments.length; i++){
sum += arguments[i];
}

console.log('sum = ' + sum);
}

find_sum(1, 3, 5);


find_sum(7, 12, 3, 2, 8);

Chú ý khi sử dụng Arguments trong JavaScript

Trong các hàm được khai báo bởi từ khóa fucntion, bằng hàm tạo (constructor) cũng như là bằng biểu thức hàm với các hàm ẩn danh, chúng ta đều có thể sử dụng Arguments với các cách mà Kiyoshi đã hướng dẫn bạn ở trên.

Tuy nhiên, bạn cần chú ý là chúng ta KHÔNG THỂ sử dụng Arguments trong các hàm được tạo bởi hàm mũi tên (arrow function) JavaScript.

Lỗi Uncaught ReferenceError sẽ xảy ra khi chúng ta vô ý sử dụng Arguments trong hàm tạo bởi arrow function.

let sum_arrow_func = () => {
let sum = 0;
for (let i = 0; i < arguments.length; i++){
sum += arguments[i];
}

console.log('sum = ' + sum);
};

sum_arrow_func(1, 3, 5);

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về arguments trong javascript và việc lấy các giá trị đã truyền vào hàm rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về JavaScript trong các bài học tiếp theo.

Viết bởi Kiyoshi. Đã đăng ký bản quyền tác giả tại <a title="Bạn được tự do chia sẻ bài viết nhưng phải để lại đường link bài viết từ laptrinhcanban.com. Bạn không được sử dụng tài liệu cho mục đích thương mại. Không được phép chỉnh sửa nội dung được phát hành trên website của chúng tôi" style="color:#fff;background-color:silver" rel="license noopener" target="_blank" href="https://creativecommons.org/licenses/by-nc-nd/4.0/">Creativecommons</a>&nbsp;và <a title="Bạn được tự do chia sẻ bài viết nhưng phải để lại đường link bài viết từ laptrinhcanban.com. Bạn không được sử dụng tài liệu cho mục đích thương mại. Không được phép chỉnh sửa nội dung được phát hành trên website của chúng tôi" style="color:#fff;background-color:silver" target="_blank" rel="noopener" href="https://www.dmca.com/Protection/Status.aspx?ID=1631afcd-7c4a-467d-8016-402c5073e5cd" class="dmca-badge">DMCA</a><script src="https://images.dmca.com/Badges/DMCABadgeHelper.min.js">

Bài viết liên quan

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> >>

Profile
Hướng dẫn arguments length javascript

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.