การเปรียบเทียบค่ากับประเภทบูลีนใน JavaScript

ในตัวอย่างก่อนหน้านี้ เราใช้สำหรับการเปรียบเทียบ โอเปอเรเตอร์ === ในกรณีนี้ ตัวแปรของเรา ถูกเปรียบเทียบเพื่อหาความเท่ากันกับ true ทั้ง ในแง่ของค่าและประเภท

สำหรับการเปรียบเทียบเช่นนี้ สามารถใช้ โอเปอเรเตอร์ == ได้ หากในตัวแปร test จะเป็นหนึ่งในค่าของ true หรือ false เสมอ ก็จะไม่มีอะไรเปลี่ยนแปลง:

javascriptlet test = true; // ตรงนี้เราเขียน true หรือ false

if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}

แต่หากในตัวแปร test สามารถ รับค่าใดๆ ก็ได้ ทุกอย่างจะกลายเป็น ซับซ้อนมากขึ้นมาก

ในกรณีดังกล่าว หากในตัวแปร test ไม่ใช่ค่าบูลีน ค่านั้น จะถูกแปลงเป็นบูลีนก่อน และหลังจากนั้นเท่านั้น จึงจะถูกนำไปเปรียบเทียบ

สมมติว่า ในตัวแปร test เป็นตัวเลข 1 ในกรณีนี้ มันจะ ถูกแปลงเป็นประเภทลอจิคัลก่อน นั่นคือ เป็น true และหลังจากนั้นจะทำการเปรียบเทียบ:

javascriptlet test = 1;

if (test == true) {
  console.log('+++'); // จะทำงานอันนี้
} else {
  console.log('---');
}

แต่สำหรับตัวอย่างเช่น ตัวเลข 0 จะถูกแปลง เป็น false และเงื่อนไขของเราในผลลัพธ์ จะแสดง 'ไม่ถูกต้อง':

javascriptlet test = 0;

if (test == true) {
  console.log('+++');
} else {
  console.log('---'); // จะทำงานอันนี้
}

โดยแท้จริงแล้ว การเปรียบเทียบเช่นนี้สามารถ เขียนใหม่ให้ชัดเจนได้ในรูปแบบต่อไปนี้:

javascriptlet test = 1;

if (Boolean(test) == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 1

จำและเขียนว่าค่าใดบ้างที่เมื่อ แปลงเป็นประเภทลอจิคัลแล้วให้ผลเป็น false

Задание 2

โดยไม่ต้องรันโค้ด จงพิจารณาว่าจะแสดงอะไร ออกทางคอนโซล:

javascriptlet test = 1;
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 3

โดยไม่ต้องรันโค้ด จงพิจารณาว่าจะแสดงอะไร ออกทางคอนโซล:

javascriptlet test = 0;
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 4

โดยไม่ต้องรันโค้ด จงพิจารณาว่าจะแสดงอะไร ออกทางคอนโซล:

javascriptlet test = 1;
    
if (test == false) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 5

โดยไม่ต้องรันโค้ด จงพิจารณาว่าจะแสดงอะไร ออกทางคอนโซล:

javascriptlet test = 1;
    
if (test != true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 6

โดยไม่ต้องรันโค้ด จงพิจารณาว่าจะแสดงอะไร ออกทางคอนโซล:

javascriptlet test = '';
    
if (test == false) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 7

โดยไม่ต้องรันโค้ด จงพิจารณาว่าจะแสดงอะไร ออกทางคอนโซล:

javascriptlet test;
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 8

โดยไม่ต้องรันโค้ด จงพิจารณาว่าจะแสดงอะไร ออกทางคอนโซล:

javascriptlet test = 3 * 'a';
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}