การเปรียบเทียบค่ากับประเภทบูลีนใน JavaScript
ในตัวอย่างก่อนหน้านี้ เราใช้สำหรับการเปรียบเทียบ
โอเปอเรเตอร์ === ในกรณีนี้ ตัวแปรของเรา
ถูกเปรียบเทียบเพื่อหาความเท่ากันกับ true ทั้ง
ในแง่ของค่าและประเภท
สำหรับการเปรียบเทียบเช่นนี้ สามารถใช้
โอเปอเรเตอร์ == ได้ หากในตัวแปร test
จะเป็นหนึ่งในค่าของ true
หรือ false เสมอ ก็จะไม่มีอะไรเปลี่ยนแปลง:
let test = true; // ตรงนี้เราเขียน true หรือ false
if (test == true) {
console.log('+++');
} else {
console.log('---');
}
แต่หากในตัวแปร test สามารถ
รับค่าใดๆ ก็ได้ ทุกอย่างจะกลายเป็น
ซับซ้อนมากขึ้นมาก
ในกรณีดังกล่าว หากในตัวแปร test
ไม่ใช่ค่าบูลีน ค่านั้น
จะถูกแปลงเป็นบูลีนก่อน และหลังจากนั้นเท่านั้น
จึงจะถูกนำไปเปรียบเทียบ
สมมติว่า ในตัวแปร test
เป็นตัวเลข 1 ในกรณีนี้ มันจะ
ถูกแปลงเป็นประเภทลอจิคัลก่อน นั่นคือ
เป็น true และหลังจากนั้นจะทำการเปรียบเทียบ:
let test = 1;
if (test == true) {
console.log('+++'); // จะทำงานอันนี้
} else {
console.log('---');
}
แต่สำหรับตัวอย่างเช่น ตัวเลข 0 จะถูกแปลง
เป็น false และเงื่อนไขของเราในผลลัพธ์
จะแสดง 'ไม่ถูกต้อง':
let test = 0;
if (test == true) {
console.log('+++');
} else {
console.log('---'); // จะทำงานอันนี้
}
โดยแท้จริงแล้ว การเปรียบเทียบเช่นนี้สามารถ เขียนใหม่ให้ชัดเจนได้ในรูปแบบต่อไปนี้:
let test = 1;
if (Boolean(test) == true) {
console.log('+++');
} else {
console.log('---');
}
จำและเขียนว่าค่าใดบ้างที่เมื่อ
แปลงเป็นประเภทลอจิคัลแล้วให้ผลเป็น
false
โดยไม่ต้องรันโค้ด จงพิจารณาว่าจะแสดงอะไร ออกทางคอนโซล:
let test = 1;
if (test == true) {
console.log('+++');
} else {
console.log('---');
}
โดยไม่ต้องรันโค้ด จงพิจารณาว่าจะแสดงอะไร ออกทางคอนโซล:
let test = 0;
if (test == true) {
console.log('+++');
} else {
console.log('---');
}
โดยไม่ต้องรันโค้ด จงพิจารณาว่าจะแสดงอะไร ออกทางคอนโซล:
let test = 1;
if (test == false) {
console.log('+++');
} else {
console.log('---');
}
โดยไม่ต้องรันโค้ด จงพิจารณาว่าจะแสดงอะไร ออกทางคอนโซล:
let test = 1;
if (test != true) {
console.log('+++');
} else {
console.log('---');
}
โดยไม่ต้องรันโค้ด จงพิจารณาว่าจะแสดงอะไร ออกทางคอนโซล:
let test = '';
if (test == false) {
console.log('+++');
} else {
console.log('---');
}
โดยไม่ต้องรันโค้ด จงพิจารณาว่าจะแสดงอะไร ออกทางคอนโซล:
let test;
if (test == true) {
console.log('+++');
} else {
console.log('---');
}
โดยไม่ต้องรันโค้ด จงพิจารณาว่าจะแสดงอะไร ออกทางคอนโซล:
let test = 3 * 'a';
if (test == true) {
console.log('+++');
} else {
console.log('---');
}