การเท่ากันทั้งค่าและชนิดใน JavaScript
สมมติว่าคุณต้องการเปรียบเทียบในแบบที่จำนวน ในเครื่องหมายอัญประกาศจะไม่เท่ากับจำนวนเดียวกัน ที่ไม่มีเครื่องหมายอัญประกาศ พูดอีกนัยหนึ่ง คุณต้องการ เปรียบเทียบในแบบที่การเปรียบเทียบไม่เพียงแต่พิจารณา ตามค่าเท่านั้น แต่ยังพิจารณาตามชนิดข้อมูลด้วย
สำหรับการนี้ แทนที่จะใช้ตัวดำเนินการ == ควร
ใช้ตัวดำเนินการ === ในตัวอย่างต่อไปนี้
เมื่อเปรียบเทียบสตริง '3' และ
จำนวน 3 เงื่อนไขจะเป็นเท็จ
เนื่องจากตัวแปร แม้จะเท่ากันในเชิงค่า
แต่ไม่เท่ากันในเชิงชนิด:
if ('3' === 3) {
console.log('+++');
} else {
console.log('---'); // ส่วนนี้จะทำงาน
}
แต่เมื่อเปรียบเทียบสตริงสองตัว '3'
เงื่อนไขจะเป็นจริง:
if ('3' === '3') {
console.log('+++'); // ส่วนนี้จะทำงาน
} else {
console.log('---');
}
เช่นเดียวกันเมื่อเปรียบเทียบจำนวน:
if (3 === 3) {
console.log('+++'); // ส่วนนี้จะทำงาน
} else {
console.log('---');
}
ความแตกต่างระหว่างตัวดำเนินการ == และตัวดำเนินการ
=== จะแสดงออกมาเมื่อ
ค่าทั้งสองเหมือนกัน แต่ชนิดข้อมูลต่างกัน
ในกรณีอื่น ๆ ตัวดำเนินการเหล่านี้ทำงาน
เหมือนกัน ตัวอย่างเช่น เมื่อเปรียบเทียบจำนวน
ที่ต่างกัน แน่นอนว่าจะแสดงผล '---':
if (2 === 3) {
console.log('+++');
} else {
console.log('---'); // ส่วนนี้จะทำงาน
}
โดยไม่ต้องรันโค้ด จงพิจารณาว่าอะไรจะแสดงผล ออกมาที่คอนโซล:
let test1 = '3';
let test2 = '3';
if (test1 == test2) {
console.log('+++');
} else {
console.log('---');
}
โดยไม่ต้องรันโค้ด จงพิจารณาว่าอะไรจะแสดงผล ออกมาที่คอนโซล:
let test1 = '3';
let test2 = '3';
if (test1 === test2) {
console.log('+++');
} else {
console.log('---');
}
โดยไม่ต้องรันโค้ด จงพิจารณาว่าอะไรจะแสดงผล ออกมาที่คอนโซล:
let test1 = 3;
let test2 = '3';
if (test1 == test2) {
console.log('+++');
} else {
console.log('---');
}
โดยไม่ต้องรันโค้ด จงพิจารณาว่าอะไรจะแสดงผล ออกมาที่คอนโซล:
let test1 = 3;
let test2 = '3';
if (test1 === test2) {
console.log('+++');
} else {
console.log('---');
}
โดยไม่ต้องรันโค้ด จงพิจารณาว่าอะไรจะแสดงผล ออกมาที่คอนโซล:
let test1 = 3;
let test2 = 3;
if (test1 === test2) {
console.log('+++');
} else {
console.log('---');
}