Bạn có nhớ bộ dụng cụ sơ cứu trong chương 3 không? . Việc đóng gói hoặc chia khối như vậy, trong đó chúng ta coi một bộ sưu tập là số ít, là một phần quan trọng trong cách con người chúng ta đối phó với thông tin phức tạp, cả bằng ngôn ngữ và trí nhớ. Khi có nhu cầu, chúng ta có thể xem xét các yếu tố tạo nên bộ. thuốc sát trùng, cao dán, băng, v.v.
Trong một hàm, bạn có thể sử dụng biến arguments
để nhận danh sách dạng mảng gồm tất cả các đối số được truyền vào hàm
Bạn không cần xác định trước. Đó là một đối tượng JavaScript gốc
function add [num1, num2] {
// logs [num1, num2] [with their values]
console.log[arguments];
// logs the value of `num1`
console.log[arguments[0]];
// logs the value of `num2`
console.log[arguments[1]];
// ...
}
Điều này đặc biệt hữu ích nếu bạn muốn cho phép truyền số lượng đối số không giới hạn vào hàm của mình
Giả sử bạn muốn có thể chuyển số lượng không giới hạn vào add[]
và cộng chúng lại với nhau. Biến arguments
là hoàn hảo cho việc này
Hãy nhớ rằng, arguments
giống như mảng nhưng không thực sự là một mảng. Để sử dụng các phương thức mảng như Array.forEach[]
với nó, bạn cần chuyển đổi nó thành một mảng với phương thức Array.from[]
function add [] {
// Set a starting total
let total = 0;
// Add each number to the total
Array.from[arguments].forEach[function [num] {
total += num;
}];
// Return to the total
return total;
}
Trong ví dụ trên, chúng tôi đang xác định một biến mặc định total
với giá trị
function add [] {
// Set a starting total
let total = 0;
// Add each number to the total
Array.from[arguments].forEach[function [num] {
total += num;
}];
// Return to the total
return total;
}
0. Chúng tôi sử dụng Array.from[]
để chuyển đổi arguments
thành một mảng và một vòng lặp Array.forEach[]
để lặp lại từng đối số và thêm nó vào total
. Sau đó, chúng tôi trả lại total
Nếu ai đó bỏ qua mà không có đối số, nó sẽ trả về
function add [] {
// Set a starting total
let total = 0;
// Add each number to the total
Array.from[arguments].forEach[function [num] {
total += num;
}];
// Return to the total
return total;
}
0. Nếu không, họ có thể thêm một hoặc nhiều số với nhau Nếu một hàm được gọi với các đối số bị thiếu [ít hơn so với khai báo], các giá trị bị thiếu được đặt thành undefined
Đôi khi điều này có thể chấp nhận được, nhưng đôi khi tốt hơn là gán giá trị mặc định cho tham số
Giá trị tham số mặc định
ES6 cho phép các tham số chức năng có giá trị mặc định
Thí dụ
Nếu y không được thông qua hoặc không xác định, thì y = 10
hàm myFunction[x, y = 10] {
trả lại x + y;
}
chức năng của tôi [5];
Thông số phần còn lại chức năng
Tham số còn lại [. ] cho phép một hàm coi số lượng đối số không xác định là một mảng
Thí dụ
tổng hàm [. lập luận] {
để tổng = 0;
for [let arg of args] sum += arg;
trả lại tổng;
}
đặt x = tổng[4, 9, 16, 25, 29, 100, 66, 77];
Tự mình thử »Đối tượng đối số
Các hàm JavaScript có một đối tượng tích hợp được gọi là đối tượng đối số
Đối tượng đối số chứa một mảng các đối số được sử dụng khi hàm được gọi [gọi]
Bằng cách này, bạn có thể chỉ cần sử dụng một hàm để tìm [ví dụ] giá trị cao nhất trong danh sách các số
Thí dụ
x = findMax[1, 123, 500, 115, 44, 88];
hàm findMax[] {
đặt max = -Infinity;
for [hãy i = 0; i < đối số. chiều dài;
if [arguments[i] > max] {
max = đối số [i];
}
}
trả lại tối đa;
}
Hoặc tạo một hàm để tính tổng tất cả các giá trị đầu vào
Thí dụ
x = sumAll[1, 123, 500, 115, 44, 88];
hàm sumAll[] {
để tổng = 0;
for [hãy i = 0; i < đối số. chiều dài;
tổng += đối số[i];
}
trả lại tổng;
}
Nếu một hàm được gọi với quá nhiều đối số [nhiều hơn so với khai báo], những đối số này có thể được truy cập bằng cách sử dụng đối tượng đối số
Các đối số được truyền theo giá trị
Tham số, trong lời gọi hàm, là đối số của hàm
Các đối số JavaScript được truyền theo giá trị. Hàm chỉ biết các giá trị, không biết vị trí của đối số