เคล็ดลับเล็กๆน้อยๆ และสิ่งที่ควรรู้ใน Javascript

ผมเขียน javascript มาได้สักพักแล้ว แต่เริ่มเขียนโดยการลองผิดลองถูก ไม่ได้ศึกษาอย่างจริงจังก่อนเขียน เลยอาจทำให้เขียนโค้ดได้ไม่ดีเท่าคนที่ศึกษาก่อนเขียนอย่างจริงจัง วันดีคืนดีไปพบหนังสือฟรีเกี่ยวกับ javascript ที่เขียนดี อ่านง่าย ชื่อ You Don’t Know JS เลยเอาสิ่งที่ผมชอบลืมหรือไม่รู้ตอนเขียน javascript มาแบ่งปันกันนิดๆหน่อยนะครับ สำหรับคนที่อ่านเต็มๆเข้าไปคลิกอ่านที่หน้า Github ได้เคยครับ ฟรี!

== แตกต่างกับ === อย่างไร

== เทียบโดยยอมให้เกิดการ coercion (แปลง type ของ variable) แต่ === ไม่ยอม

var a = "88" // String
var b = 88;

a == b // true
a === b // false

บัค typeof null

หากเราใช้ typeof กับ variable ที่เป็น null มันจะตอบมาเป็น object ระวังกันด้วยนะครับ

a = null;
typeof a; <--- "object"

while แตกต่างจาก do..while ยังไง

สำหรับ while จะเช็คว่าผ่าน condition ก่อนรึเปล่า แต่สำหรับ do..while จะ run ก่อนค่อยเช็ค

this

this ใน javascript ไม่เหมือน OO ภาษาอื่นนะครับ การใช้ this ใน javascript จะ point ไปที่ object ไม่ได้หมายถึงตัว function เหมือนในภาษาอื่นๆ

function foo(){
  console.log(this.bar);
}

var bar = "global";

var obj1 = {
  bar: "obj1"
  foo: foo
}

foo(); <-- ถ้าอยู่ใน strict mode จะขึ้น error และเป็น undefined
obj1.foo() <-- "obj1"

let ต่างแตกกับ var อย่างไร (ES6)

let คือการสร้าง variable ที่อยู่ใน block ({..}) เทียบกับ var จะสร้าง variable ที่อยู่ใน scope

function hi(){
  var a = 1;

  if(a >= 1){
    var b = 2;
  }

  console.log(b); // <-- undefined
}

ใช้ const แทน var (ES6)

หากคุณต้องการตั้ง Variables ที่จะไม่มีเปลี่ยนแล้ว ให้หันมาใช้ const แทน var กันครับ เพราะถ้าเกิดเผลอเปลี่ยนโปรแกรมจะไม่ทำการเปลี่ยนให้ หรือถ้าอยู่ใน strict mode จะเกิด error ขึ้น

const URL = 'https://narongdej.sarnsuwan.com'