Khám phá hành vi này từ https. //github. com/acdlite/flux-standard-action/pull/45/commits/78a9065914b2ca4848dfba8fc0b47c54e2d0e319
Đây là mã gốc
export interface FSA {
...
payload?: Payload;
...
}
Tuy nhiên, điều này không hoạt động tốt với loại bảo vệ
function isSomeAction[action: any]: action is FSA {
return true;
}
let action = {...};
if [isSomeAction[action]] {
// `action.payload` may be undefined.
console.log[action.payload.message];
}
Vì loại chung có thể là bất kỳ thứ gì, kể cả undefined
, nên tôi đang xem xét loại bỏ chỉ định tùy chọn
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
function myFunction[x, y = 10] {
return x + y;
}
myFunction[
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ụ
hàm tổng[. args] {
let sum = 0;
for [let args of args] sum += arg;
return sum;
}
đặ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];
function findMax[] {
let max = -Infinity;
for [let i = 0; i < đối số. chiều dài;
if [arguments[i] > max] {
max = arguments[i];
}
}
return max;
}
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];
function sumAll[] {
let sum = 0;
for [let i = 0; i < đối số. chiều dài;
sum += arguments[i];
}
return sum;
}
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
Đố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ố
Như chúng ta đã thấy trong phần biến, chúng ta có thể gán bất kỳ loại giá trị nguyên thủy hoặc không nguyên thủy nào cho một biến. JavaScript bao gồm hai giá trị kiểu nguyên thủy bổ sung - null và không xác định, có thể được gán cho một biến có ý nghĩa đặc biệt
vô giá trị
Bạn có thể gán null cho một biến để biểu thị rằng hiện tại biến đó chưa có bất kỳ giá trị nào nhưng sau này nó sẽ có. null có nghĩa là không có giá trị
Thí dụ. vô giá trị
var myVar = null;
alert[myVar]; // null
Trong ví dụ trên, null được gán cho một biến myVar. Nó có nghĩa là chúng ta đã định nghĩa một biến nhưng chưa gán bất kỳ giá trị nào, vì vậy giá trị không có
Nếu bạn cố gắng tìm phần tử DOM bằng tài liệu. getElelementByID chẳng hạn, và nếu phần tử được tìm thấy thì nó sẽ trả về giá trị rỗng. Vì vậy, nên kiểm tra null trước khi làm điều gì đó với phần tử đó
Thí dụ. vô giá trị
var saveButton = document.getElementById["save"];
if [saveButton !== null]
saveButton.submit[];
Một giá trị null đánh giá là sai trong biểu thức điều kiện. Vì vậy, bạn không cần phải sử dụng các toán tử so sánh như === hoặc. == để kiểm tra giá trị null
Thí dụ. null trong biểu thức điều kiện
var myVar = null;
if [myVar]
alert["myVar is not null'];
else
alert["myVar is null" ];
chưa xác định
Không xác định cũng là một giá trị nguyên thủy trong JavaScript. Một biến hoặc một đối tượng có giá trị không xác định khi không có giá trị nào được gán trước khi sử dụng nó. Vì vậy, bạn có thể nói rằng không xác định có nghĩa là thiếu giá trị hoặc giá trị không xác định
Thí dụ. chưa xác định
var myVar;
alert[myVar]; // undefined
Trong ví dụ trên, chúng tôi chưa gán bất kỳ giá trị nào cho biến có tên 'myVar'. Biến 'myVar' thiếu giá trị. Vì vậy, nó là không xác định
Bạn sẽ nhận được giá trị không xác định khi bạn gọi một thuộc tính hoặc phương thức không tồn tại của một đối tượng
Thí dụ. chưa xác định
function Sum[val1, val2]
{
var result = val1 + val2;
}
var result = Sum[5, 5];
alert[result];// undefined
Trong ví dụ trên, một hàm Sum không trả về bất kỳ kết quả nào nhưng chúng tôi vẫn cố gắng gán giá trị kết quả của nó cho một biến. Vì vậy, trong trường hợp này, kết quả sẽ không được xác định
Nếu bạn truyền ít đối số hơn trong lời gọi hàm thì tham số đó sẽ có giá trị không xác định
Thí dụ. chưa xác định
function Sum[val1, val2]
{
return val1 + val2; // val2 is undefined
}
Sum[5];
Một giá trị không xác định là sai khi được sử dụng trong biểu thức điều kiện
Thí dụ. không xác định trong Biểu thức có điều kiện
________số 8
null và undefined là một trong những lý do chính gây ra lỗi thời gian chạy trong ứng dụng JavaScript. Điều này xảy ra nếu bạn không kiểm tra giá trị của các biến trả về không xác định trước khi sử dụng nó. Nếu bạn không chắc chắn rằng một biến sẽ luôn có giá trị nào đó, thì cách tốt nhất là kiểm tra giá trị của biến xem có null hay không xác định trước khi sử dụng chúng