Cách chấp nhận các tham số không giới hạn trong một hàm JavaScript

Làm thế nào để có thể có một hàm chấp nhận số lượng tham số không giới hạn?

Giả sử chúng ta có một hàm được gọi làjoin()công việc của ai là nối tất cả các chuỗi mà chúng tôi chuyển cho nó.

Ví dụ, chúng tôi viết một nguyên mẫu chấp nhận 2 chuỗi:

const join = (string1, string2) => {
  return string1 + string2
}

và khi chúng ta gọi nó, chúng ta nhận được một chuỗi là sự nối 2 đối số mà chúng ta truyền vào:

join('hi', ' flavio') // 'hi flavio'

Một cách đơn giản là nối các tham số bổ sung mặc định vào một chuỗi rỗng, như sau:

const join = (string1, string2, string3 = '') => {
  return string1 + string2 + string3
}

nhưng cách tiếp cận này không mở rộng quy mô tốt, bởi vì chúng tôi cần thêm một số lượng lớn các tham số và mã của chúng tôi sẽ trông khá tệ.

Thay vào đó, chúng ta có thể sử dụng cú pháp này, với toán tử spread (...) theo sau là tên của tham số mà chúng ta muốn sử dụng. Bên trong hàm, tham số là một mảng, vì vậy chúng ta có thể đơn giản gọi nó là.join()phương thức để nối các chuỗi mà nó chứa, truyền một chuỗi rỗng làm đối số (nếu không, nó mặc định nối các chuỗi thêm dấu phẩy giữa chúng):

const join = (...strings) => {
  return strings.join('')
}

Trong trường hợp của chúng tôi, chúng tôi cũng có thể đơn giản hóa việc này bằng cách sử dụng cú pháp trả về ngầm định có sẵn trong các hàm mũi tên:

const join = (...strings) => strings.join('')

và chúng ta có thể gọi điều này giống như cách chúng ta đã làm trước đây:

join('hi', ' flavio') // 'hi flavio'
join('hi', ' flavio', ' it', ' is', ' a', ' beautiful day!') // ''hi flavio it is a beautiful day!'

Tải xuống miễn phí của tôiSổ tay dành cho Người mới bắt đầu JavaScript


Các hướng dẫn js khác: