Kiểm tra JavaScript nếu đúng hay sai
Bảng 4. Chuyển đổi giá trị thành booleans. 8 1 0 1boolean 3 (no change)number 3 4 1, 6 4 1Other numbers 4 2bigint 3 4 1Other numbers 4 2string 6 4 1Other strings 4 2symbol 2objectAlways 2 Show
15. 2 Giá trị giả và trung thựcKhi kiểm tra điều kiện của câu lệnh 3, vòng lặp 4 hoặc vòng lặp 5, JavaScript hoạt động khác với mong đợi của bạn. Lấy ví dụ, điều kiện sauTrong nhiều ngôn ngữ lập trình, điều kiện này tương đương với Tuy nhiên, trong JavaScript, nó tương đương với
Nghĩa là, JavaScript kiểm tra xem 6 có phải là 2 khi được chuyển đổi thành boolean hay không. Loại kiểm tra này phổ biến đến mức các tên sau đây đã được giới thiệu
Mỗi giá trị là trung thực hoặc sai. tbl tư vấn. , chúng ta có thể tạo một danh sách đầy đủ các giá trị giả
Tất cả các giá trị khác (bao gồm tất cả các đối tượng) là trung thực
15. 2. 1 Kiểm tra tính trung thực và giả dối
Toán tử điều kiện được sử dụng ở dòng cuối cùng được giải thích Bài tập. chân thật 715. 3 Kiểm tra sự tồn tại dựa trên sự thậtTrong JavaScript, nếu bạn đọc thứ gì đó không tồn tại (e. g. , một tham số bị thiếu hoặc một thuộc tính bị thiếu), kết quả là bạn thường nhận được 8. Trong những trường hợp này, việc kiểm tra sự tồn tại tương đương với việc so sánh một giá trị với 8. Ví dụ: đoạn mã sau kiểm tra xem đối tượng 0 có thuộc tính 1 không
Do 8 bị sai, chúng tôi có thể rút ngắn kiểm tra này thành
15. 3. 1 Cạm bẫy. kiểm tra sự tồn tại dựa trên sự trung thực là không chính xácKiểm tra sự tồn tại dựa trên tính xác thực có một cạm bẫy. chúng không chính xác lắm. Xem xét ví dụ trước đây
Phần thân của câu lệnh 3 bị bỏ qua nếu
Tuy nhiên, nó cũng bị bỏ qua nếu
Trong thực tế, điều này hiếm khi gây ra vấn đề, nhưng bạn phải nhận thức được cạm bẫy này 15. 3. 2 Trường hợp sử dụng. là một tham số được cung cấp?Kiểm tra tính trung thực thường được sử dụng để xác định xem người gọi hàm có cung cấp tham số hay không
Về mặt tích cực, mô hình này được thiết lập và ngắn. Nó ném lỗi chính xác cho 8 và 0Về mặt tiêu cực, có một cạm bẫy đã đề cập trước đó. mã cũng đưa ra lỗi cho tất cả các giá trị giả khác Một cách khác là kiểm tra 8
15. 3. 3 Trường hợp sử dụng. một tài sản tồn tại?Kiểm tra tính trung thực cũng thường được sử dụng để xác định xem một tài sản có tồn tại hay không
Mẫu này cũng được thiết lập và có thông báo trước. nó không chỉ ném nếu thuộc tính bị thiếu mà còn nếu thuộc tính tồn tại và có bất kỳ giá trị giả nào Nếu bạn thực sự muốn kiểm tra xem thuộc tính có tồn tại hay không, bạn phải sử dụng 015. 4 Toán tử điều kiện (if (x === undefined) { throw new Error('Missing parameter x'); }6)Toán tử điều kiện là phiên bản biểu thức của câu lệnh 3. Cú pháp của nó là 1Nó được đánh giá như sau
Toán tử điều kiện còn được gọi là toán tử bậc ba vì nó có ba toán hạng ví dụ 2Đoạn mã sau chứng minh rằng bất kỳ nhánh nào trong hai nhánh “then” và “else” được chọn thông qua điều kiện, thì chỉ nhánh đó được đánh giá. Các chi nhánh khác không phải là 315. 5 Toán tử logic nhị phân. Và (function readFile(fileDesc) { if (!fileDesc.path) { throw new Error('Missing property: .path'); } // ··· } readFile({ path: 'foo.txt' }); // no error1), Hoặc (function readFile(fileDesc) { if (!fileDesc.path) { throw new Error('Missing property: .path'); } // ··· } readFile({ path: 'foo.txt' }); // no error2)Các toán tử logic nhị phân 3 và 4 là bảo toàn giá trị và đoản mạch15. 5. 1 Giữ gìn giá trịBảo toàn giá trị có nghĩa là toán hạng được hiểu là phép toán luận nhưng được trả về không thay đổi 415. 5. 2 Đoản mạchĐoản mạch có nghĩa là nếu toán hạng đầu tiên đã xác định kết quả, thì toán hạng thứ hai không được đánh giá. Toán tử duy nhất khác trì hoãn việc đánh giá các toán hạng của nó là toán tử có điều kiện. Thông thường, tất cả các toán hạng được đánh giá trước khi thực hiện một thao tác Ví dụ: logic And ( 3) không đánh giá toán hạng thứ hai của nó nếu toán hạng đầu tiên là sai 5Nếu toán hạng đầu tiên là true, 6 được thực thi 615. 5. 3 Hợp lý và (function readFile(fileDesc) {
if (!fileDesc.path) {
throw new Error('Missing property: .path');
}
// ···
}
readFile({ path: 'foo.txt' }); // no error |