Yêu thích của tôi là sử dụng
const string = 'string';
!!string; // true
Boolean[string]; // true
1. Đây cũng là phương pháp được đề xuất bởi hướng dẫn phong cách JavaScript của Airbnb 👍Boolean[value];
!!value;
# Chuyển đổi giá trị thành Boolean
# Sợi dây
const string = 'string';
!!string; // true
Boolean[string]; // true
# Con số
const number = 100;
!!number; // true
Boolean[number]; // true
# Giá trị giả
Trong JavaScript, có 6 giá trị giả. Nếu bạn chuyển đổi bất kỳ thứ nào trong số này thành
const string = 'string';
!!string; // true
Boolean[string]; // true
2, nó sẽ trả về const string = 'string';
!!string; // true
Boolean[string]; // true
3false
undefined
null
NaN
0
"" [empty string]
Bất cứ thứ gì không có trong danh sách giả, sẽ trả về
const string = 'string';
!!string; // true
Boolean[string]; // true
4 👍Thông tin thêm về điều này, bạn có thể đọc Ghi chú mã của tôi về giá trị sai
# Ví dụ
Áp dụng
const string = 'string';
!!string; // true
Boolean[string]; // true
1 trên các giá trị giả!!false; // false
!!undefined; // false
!!null; // false
!!NaN; // false
!!0; // false
!!''; // false
Áp dụng
const string = 'string';
!!string; // true
Boolean[string]; // true
6 trên các giá trị giảBoolean[value];
!!value;
1# Cách hoạt động của const string = 'string';
!!string; // true
Boolean[string]; // true
1
const string = 'string';
!!string; // true
Boolean[string]; // true
const string = 'string';
!!string; // true
Boolean[string]; // true
8 đầu tiên ép buộc giá trị thành boolean và nghịch đảo nó. Trong trường hợp này, const string = 'string';
!!string; // true
Boolean[string]; // true
9 sẽ trả về const string = 'string';
!!string; // true
Boolean[string]; // true
3. Vì vậy, để đảo ngược nó trở lại const string = 'string';
!!string; // true
Boolean[string]; // true
4, chúng tôi đặt một const string = 'string';
!!string; // true
Boolean[string]; // true
8 khác vào đó. Do đó, sử dụng gấp đôi const string = 'string';
!!string; // true
Boolean[string]; // true
1Boolean[value];
!!value;
9# Coi chừng const number = 100;
!!number; // true
Boolean[number]; // true
4
const number = 100;
!!number; // true
Boolean[number]; // true
const string = 'string';
!!string; // true
Boolean[string]; // true
1Lưu ý rằng
const number = 100;
!!number; // true
Boolean[number]; // true
5 nằm giữa dấu ngoặc kép const number = 100;
!!number; // true
Boolean[number]; // true
6. Mặc dù nó ghi là const string = 'string';
!!string; // true
Boolean[string]; // true
3, nhưng nó thực sự là một chuỗi. Tôi biết hầu hết các bạn sẽ không rơi vào trường hợp này, nhưng nếu bạn giống tôi, bạn có thể chỉ muốn cảnh giác với những mánh khóe hài hước mà mọi người có thể đang chơi với bạn 😂# Đầu vào của cộng đồng
@tassoevan. Tôi thích lọc các giá trị giả từ các mảng như thế này.
const number = 100;
!!number; // true
Boolean[number]; // true
8@fleonus. Tôi thích
const number = 100;
!!number; // true
Boolean[number]; // true
9 chỉ để tỏ ra ngầu và khiến mọi người thất vọng 😛# Kiểm tra tốc độ
Đây là một bài kiểm tra mà tôi tìm thấy
boolean so với
Có vẻ như
const string = 'string';
!!string; // true
Boolean[string]; // true
1 nhanh hơn một chút so với const string = 'string';
!!string; // true
Boolean[string]; // true
6# Cái nào để sử dụng?
Tôi đã nhận được rất nhiều bình luận về bài đăng này. Một số người thích
const string = 'string';
!!string; // true
Boolean[string]; // true
6 vì nó rõ ràng hơnNhưng, Kyle Simpson từ You Don't Know JS, đã đề cập rằng cả hai đều rõ ràng
const number = 100;
!!number; // true
Boolean[number]; // true
0Kyle Simpson. YDKJS - Ép buộc
Tôi không nghĩ rằng tôi có một câu trả lời tuyệt vời cho bạn. Bạn sẽ biết nhóm của bạn tốt hơn tôi làm. Tôi sẽ tiếp tục sử dụng
const string = 'string';
!!string; // true
Boolean[string]; // true
1 trong các dự án cá nhân của mình, vì nó ít phải gõ hơn và tôi hiểu cú pháp này. Nhưng nếu tôi ở trong một nhóm, tôi có thể chọn const string = 'string';
!!string; // true
Boolean[string]; // true
6 vì tôi nghĩ hầu hết các nhà phát triển sẽ hiểu điều đó hơn. Cho dù bạn chọn cái nào, điều quan trọng nhất là phải nhất quán. Đừng lật giữa hai cái trong cơ sở mã của bạn. Chọn một và gắn bó với nó 💪Đánh giá cao một bình luận tuyệt vời tôi nhận được
@patrick_developer. Tôi nói rằng một người nên hiểu cả hai chỉ trong trường hợp một người được trình bày với các cơ sở mã khác nhau sử dụng từng cơ sở. Kiên thức là sức mạnh
Nói cách khác, cái này không tốt hơn cái kia. Cái này tôi tranh luận là một sở thích hơn. Vì vậy, bạn không thể đi sai. Nhưng đừng tước đi sự hiểu biết của cả hai. Giống như Patrick đã nói, "Kiến thức là sức mạnh" 💪
# Tránh false
undefined
null
NaN
0
"" [empty string]
5
false
undefined
null
NaN
0
"" [empty string]
Sử dụng Nguyên thủy thay vì Loại đối tượng
const number = 100;
!!number; // true
Boolean[number]; // true
4CJJ. Điều đáng chú ý là
false
undefined
null
NaN
0
"" [empty string]
5 không phải là một boolean mà là một thể hiện của Boolean. Nguyên thủy rẻ hơn và nên được ưu tiên hơn loại đối tượngCJJ.
false
undefined
null
NaN
0
"" [empty string]
7 trả về một loại đối tượng. false
undefined
null
NaN
0
"" [empty string]
8 chỉ trả về một boolean nguyên thủy. Tôi nghi ngờ rằng false
undefined
null
NaN
0
"" [empty string]
8 nhanh hơn !!false; // false
!!undefined; // false
!!null; // false
!!NaN; // false
!!0; // false
!!''; // false
0 vì đây chỉ là một thao tác, nhưng cũng hoàn toàn có khả năng các trình duyệt triển khai tối ưu hóa sao cho khi nhìn thấy const string = 'string';
!!string; // true
Boolean[string]; // true
1, chúng biết trực tiếp chuyển đối số sang một nguyên hàm boolean [thay vì thực sự thực hiện !!false; // false
!!undefined; // false
!!null; // false
!!NaN; // false
!!0; // false
!!''; // false
2 hai lần trong một CJJ. Nguyên thủy rẻ vì chúng không thay đổi nên bạn có thể chia sẻ tài liệu tham khảo và không phải giữ bất kỳ trạng thái nào trong trường hợp. Nó chỉ là
const string = 'string';
!!string; // true
Boolean[string]; // true
4 hoặc const string = 'string';
!!string; // true
Boolean[string]; // true
3. Nhưng false
undefined
null
NaN
0
"" [empty string]
7 là một đối tượng. Nó có địa chỉ bộ nhớ duy nhất của riêng nó và nó có thể giữ trạng thái bên trong duy nhất cho nó. Điều này có nghĩa là nó không thể chỉ giữ một tham chiếu đến một thể hiện đơn lẻ bất biến. Mọi lời gọi đến false
undefined
null
NaN
0
"" [empty string]
7 đều khởi tạo một đối tượng hoàn toàn mới !!false; // false
!!undefined; // false
!!null; // false
!!NaN; // false
!!0; // false
!!''; // false
7Cảm ơn. CJJ
# Xóa chuỗi rỗng bằng Boolean Constructor
CJJ. Đây là ví dụ kinh điển. Nếu bạn nhận được một danh sách các giá trị chuỗi được phân tách bằng dấu phẩy và bạn muốn lọc ra các chuỗi trống, bạn có thể chuyển hàm tạo Boolean vào Array. nguyên mẫu. bộ lọc và nó sẽ tự động loại bỏ các chuỗi có độ dài bằng 0 để lại một mảng chỉ các chuỗi hợp lệ