Truy vấn và thiết lập các đặc tính Javascript (phần 7)

Các lỗi truy cập đặc tính

Các biểu thức truy cập đặc tính không luôn trả về hay thiết lập một giá trị. Phần này giải thích các thứ cái
có thể sai khi bạn truy vấn hay thiết lập một đặc tính.
Nó không phải là lỗi để truy vấn một đặc tính cái không tồn tại. Nếu đặc tính x không được tìm thấy như đặc tính
bản thân hay một đặc tính kế thừa của o, biểu thức truy cập đặc tính o.x đánh giá thành undefined. Nhớ lại rằng
book object có một đặc tính “sub-title”, nhưng không phải một đặc tính “subtitle”:

book.subtitle // => undefined: property doesn’t exist

Nó là một lỗi, tuy nhiên, để thử truy vấn một đặc tính của một object cái không tồn tại. Các giá trị null và
undefined không có các đặc tính, và nó là một lỗi để truy vấn các đặc tính có những giá trị này. Tiếp tục
ví dụ trước:

let len = book.subtitle.length; // !TypeError: undefined doesn’t have length

Các biểu thức truy cập đặc tính sẽ thất bại nếu bên tay trái của . là null hay undefined. Nên khi viết một
biểu thức như book.author.surname, bạn nên cẩn thận nếu bạn không chắc chắn rằng book và book.author thực sự
được định nghĩa. Sau đây là 2 cách để bảo vệ lại loại vấn đề này:

// A verbose and explicit technique
let surname = undefined;
if (book) {

if (book.author) {

surname = book.author.surname;

}

}
// A concise and idiomatic alternative to get surname or null or undefined
surname = book && book.author && book.author.surname;

Chia sẻ