JavaScript Weird Parts

1. NaN

NaN ไม่เท่ากับตัวมันเอง เพื่อป้องกันการคำนวณที่ผิดพลาด เช่น NaN/Nan === 1 หรือ NaN * 1 === NaN if (NaN/NaN) { console.log('Equal') } วิธีเช็คว่าเป็น NaN หรือไม่ const result = 1 / 'hello' if(Number.isNaN(result)) { console.log('Equal to NaN') }

2. Type Coercion

if (1 < 2 < 3) { console.log('Inside') } แปลงเป็น (true < 3) -> (1 < 3) = true if (3 < 2 < 1) { console.log('Inside') } แปลงเป็น (true < 1) -> (1 < 1) = false console.log(2 - '1') js แปลง String เป็น Number console.log(2 + '1') js แปลง Number เป็น String console.log(true + true) js แปลง Boolean เป็น Number

3. Interpreter & Complier

function getPerson() { return { name: 'firstname' } } console.log(getPerson()) function getPerson() { return js ใส่ ; ให้อัตโนมัติในบรรทัดนี้ ทำให้ไม่เกิดการทำงานต่อ { name: 'firstname' } }

4. Checking Object Type

const person = {} if(typeof person === 'object' && person !== null) { console.log('Yes, it is') } null เป็น Object เหมือนกัน ถ้าจะเช็ค object ต้องเช็คว่าไม่เท่ากับ null ด้วย