Trang chủ / Cài đặt Giá trị mặc định cho các tham số bị thiếu trong hàm JavaScriptSetting default values for missing parameters in a Javascript function Các hàm JavaScript có thể được truyền ít hoặc nhiều tham số tùy thích - số lượng chính xác các tham số được chỉ định trong khai báo hàm không chính xác là những gì phải được truyền vào. Bài đăng này cho thấy cách đặt giá trị mặc định cho tham số nếu nó không được truyền Trong. Ví dụ sau đây minh họa điều này, trong đó hàm lấy ba tham số và ghi vào tài liệu giá trị của chúng: Để kiểm tra nó: Và kết quả: Cuộc gọi chức năng đầu tiên không vượt qua bất kỳ tham số nào, vì vậy mỗi thông số không được xác định. Thứ hai chỉ vượt qua tham số "A" để có giá trị và các tham số khác không được xác định, v.v. Để chỉ định giá trị mặc định cho tham số trong hàm JavaScript nếu nó không được truyền, hãy kiểm tra xem nó có được xác định không và nếu không đặt giá trị mặc định. Ví dụ:Nếu một tham số không được truyền trong đó sẽ không được xác định
function foo[a, b, c] {
document.write['a: ' + a + ' '];
document.write['b: ' + b + ' '];
document.write['c: ' + c + ' '];
document.write['
'];
}
foo[];
foo[1];
foo[1, 2];
foo[1, 2, 3];
a: undefined b: undefined c: undefined
a: 1 b: undefined c: undefined
a: 1 b: 2 c: undefined
a: 1 b: 2 c: 3
function foo[a, b, c] { if[typeof a == 'undefined'] { a = 'AAA'; } if[typeof b == 'undefined'] { b = 'BBB'; } if[typeof c == 'undefined'] { c = 'CCC'; } document.write['a: ' + a + ' ']; document.write['b: ' + b + ' ']; document.write['c: ' + c + ' ']; document.write['
']; }
Để kiểm tra nó:
foo[]; foo[1]; foo[1, 2]; foo[1, 2, 3];
Và kết quả:
a: AAA b: BBB c: CCC a: 1 b: BBB c: CCC a: 1 b: 2 c: CCC a: 1 b: 2 c: 3
Cuộc gọi chức năng đầu tiên không vượt qua bất kỳ tham số nào, vì vậy mỗi thông số không được xác định. Thứ hai chỉ vượt qua tham số "A" để có giá trị và các tham số khác không được xác định, v.v.
Để chỉ định giá trị mặc định cho tham số trong hàm JavaScript nếu nó không được truyền, hãy kiểm tra xem nó có được xác định không và nếu không đặt giá trị mặc định. Ví dụ:
a = a || "AAA";
Một giải pháp tốt hơn
function foo[a, b, c] { a = a || "AAA"; b = b || "BBB"; c = c || "CCC"; document.write['a: ' + a + ' ']; document.write['b: ' + b + ' ']; document.write['c: ' + c + ' ']; document.write['
']; }
Nhờ một trong những độc giả của tôi, tôi đã học được một cách tốt hơn để thiết lập giá trị mặc định cho một biến và ví dụ này ở đây là một bản cập nhật để trả lời email của anh ấy. Một biến có thể được gán một mặc định nếu không có giá trị nào cho nó đã được đặt như vậy trong JavaScript:
Ngoại lệ JavaScript "Thiếu tham số chính thức" xảy ra khi khai báo hàm của bạn bị thiếu các tham số hợp lệ.Thông điệp
SyntaxError: missing formal parameter [Firefox]
SyntaxError: Unexpected number '3'. Expected a parameter pattern or a ']' in parameter list. [Safari]
SyntaxError: Unexpected string literal "x". Expected a parameter pattern or a ']' in parameter list. [Safari]
Loại lỗi
Có chuyện gì?
"Tham số chính thức" là một cách nói "tham số chức năng" lạ mắt. Tuyên bố chức năng của bạn bị thiếu các tham số hợp lệ. Trong tuyên bố của một hàm, các tham số phải là định danh, không phải bất kỳ giá trị nào như số, chuỗi hoặc đối tượng. Khai báo các chức năng và chức năng gọi là hai bước riêng biệt. Khai báo yêu cầu định danh là tham số và chỉ khi gọi [gọi] hàm, bạn cung cấp các giá trị mà hàm nên sử dụng.
Trong JavaScript, các định danh chỉ có thể chứa các ký tự chữ và số [hoặc "$" hoặc "_"] và có thể không bắt đầu bằng một chữ số. Một định danh khác với một chuỗi ở chỗ một chuỗi là dữ liệu, trong khi một định danh là một phần của mã.string in that a string is data, while an identifier is part of the code.
Ví dụ
Cung cấp các tham số chức năng thích hợp
Các tham số chức năng phải là định danh khi thiết lập một hàm. Tất cả các khai báo chức năng này đều thất bại, vì chúng đang cung cấp các giá trị cho các tham số của chúng:
function square[3] {
return number * number;
};
// SyntaxError: missing formal parameter
function greet["Howdy"] {
return greeting;
};
// SyntaxError: missing formal parameter
function log[{ obj: "value"}] {
console.log[arg]
};
// SyntaxError: missing formal parameter
Bạn sẽ cần sử dụng số nhận dạng trong khai báo chức năng:
foo[]; foo[1]; foo[1, 2]; foo[1, 2, 3];0
Sau đó, bạn có thể gọi các chức năng này với các đối số bạn thích:
foo[]; foo[1]; foo[1, 2]; foo[1, 2, 3];1