Default parameter
Default parameter cho phép chỉ định giá trị thay thế khi giá trị của tham số là undefined.
Cú pháp default parameter
Trong JavaScript, default parameter được viết bằng cách thêm = và giá trị mặc định bên phải tham số.
js// Function declarationfunctiontên_function (tham_số =giá_trị_mặc_định ) {}// Arrow function(tham_số =giá_trị_mặc_định ) => {};
js// Function declarationfunctiontên_function (tham_số =giá_trị_mặc_định ) {}// Arrow function(tham_số =giá_trị_mặc_định ) => {};
Trong TypeScript, khi viết cả type annotation và default parameter, type annotation được viết trước.
ts// Function declarationfunctiontên_function (tham_số :Kiểu =giá_trị_mặc_định ) {}// Arrow function(tham_số :Kiểu =giá_trị_mặc_định ) => {};
ts// Function declarationfunctiontên_function (tham_số :Kiểu =giá_trị_mặc_định ) {}// Arrow function(tham_số :Kiểu =giá_trị_mặc_định ) => {};
Giá trị mặc định được sử dụng khi là undefined
Trong JavaScript, khi bỏ qua tham số, nó sẽ trở thành undefined.
jsfunctionfoo (x ) {console .log (x );}foo ();
jsfunctionfoo (x ) {console .log (x );}foo ();
Default parameter sẽ được gán giá trị thay thế khi tham số là undefined. Ví dụ, trong lời gọi function sau, không truyền tham số nên x là undefined. Do đó, giá trị mặc định 1 được gán.
tsfunctionfoo (x = 1) {console .log (x );}foo ();
tsfunctionfoo (x = 1) {console .log (x );}foo ();
Khi truyền undefined làm tham số như sau, giá trị mặc định cũng được gán.
tsfoo (undefined );
tsfoo (undefined );
Lưu ý rằng khi tham số là null, default parameter không được áp dụng.
jsfunctionfoo (x = 1) {console .log (x );}foo (null);
jsfunctionfoo (x = 1) {console .log (x );}foo (null);
Có thể viết ở giữa danh sách tham số
Trong JavaScript, default parameter có thể được viết trước các tham số không có giá trị mặc định.
jsfunctionfoo (x ,y = 2,z ) {console .log (x ,y ,z );}foo (1,undefined , 3);
jsfunctionfoo (x ,y = 2,z ) {console .log (x ,y ,z );}foo (1,undefined , 3);
Có thể viết logic khởi tạo
Trong JavaScript, bạn có thể viết expression làm giá trị mặc định.
jsfunctionfoo (x = 2 * 2) {}
jsfunctionfoo (x = 2 * 2) {}
Vì có thể viết expression, nên cũng có thể viết lời gọi function.
jsfunctionfoo (x =parseInt ("1.5")) {}
jsfunctionfoo (x =parseInt ("1.5")) {}
Không thể viết xử lý không đồng bộ
Tuy nhiên, bạn không thể viết xử lý gọi async function bằng cách sử dụng await.
tsasync function'await' expressions cannot be used in a parameter initializer.2524'await' expressions cannot be used in a parameter initializer.foo (x = awaitPromise .resolve (1)) {}
tsasync function'await' expressions cannot be used in a parameter initializer.2524'await' expressions cannot be used in a parameter initializer.foo (x = awaitPromise .resolve (1)) {}
Type inference hoạt động
Trong TypeScript, khi có default parameter, type inference cho tham số sẽ hoạt động. Do đó, bạn có thể bỏ qua type annotation khi có default parameter.
tsfunctionfoo (x = 1) {}
tsfunctionfoo (x = 1) {}
Chia sẻ kiến thức
・Default parameter trong JavaScript là giá trị được sử dụng khi tham số là undefined
・Cú pháp: function tênđịnh) {}
・Không trở thành giá trị mặc định khi là null
・Có thể viết ở giữa danh sách tham số
・Cũng có thể viết logic khởi tạo đơn giản
・Trong TypeScript, type inference hoạt động
Từ 『Survival TypeScript』