วันนี้มาพูดถึง Scope ใน JavaScript แบบเบาๆกันหน่อย เรื่องScope ใน JavaScript มีรายละเอียดให้เราได้เคลิบเคลิ้มกันอีกนาน
ซึ่งการสร้าง Scope ใน JavaScript สามารถทำได้ด้วยโค้ดแบบนี้ครับ
ถ้าเราไม่สร้าง scope ใหม่แล้วประกาศตัวแปรตรงๆเลย มันจะเป็น global (windows) โอกาสที่ตัวแปรจะไปชนกันกับของคนอื่นก็จะมีเยอะกว่า เพราะใน JavaScript ถึงจะประกาศตัวแปรด้านล่างก็เห็นทั้งไฟล์อยู่ดี แต่ถ้าเราสร้างโลกของเราแล้วก็จะมั่นใจมากขึ้นว่าตัวแปรของเราจะไม่ตีกับใคร
เราอาจจะได้เจอโค้ดลักษณะนี้
จากตัวอย่างคือสร้างโลกและส่งตัวแปร jQuery เข้าไปให้สิงอยู่ในตัวแปร $ ซึ่งเป็น local variable แล้วในโลกนั้นก็เรียก $ แทน jQuery ได้อย่างสบายใจไม่ต้องกลัวไปตีกับคนอื่น่
ถ้าพูดถึงตัวแปร this ในโลกของการเขียนโปรแกรมแบบ Object Oriented ผมจะตีความตัวแปร this ว่ามันจะต้องหมายถึงตัว object นั้นๆ ที่กำลังทำงานอยู่ เป็นแน่แท้…..
แต่มันไม่ใช่แบบนั้นใน javascript น่ะสิ!! …. อ้าวอ้าว ยังไง ตอบมาให้เคลียร์เลย Read this article »
Array ที่มีอยู่มัน array แบบหลอกๆ จริงแล้วมันเป็น object ที่มี key เป็นตัวเลข, มี method เกี่ยวกับ array, และมี property length
ถ้าเราพึ่งคำสั่ง typeof อย่างเดียวเราก็จะเจ็บอีกตามเคย

กล่าวคือถ้าเราสั่ง typeof [] และ typeof {} มันจะบอกว่า เป็น object ทั้งคู่! แบบนี้
Read this article »
พอดีผมไปหา code เก่า… แล้วเจอ code ที่เขียนแบบนี้
var graph_url = '/' + pageId + '/members/' + uid;
ปวดตับมาก code แม่งดูโคตรยากเลย ต่อ string กันกระจาย…
ก็เลยคิดว่าถ้าเราเขียนฟังก์ชั่นทำ string template แบบนี้
str_parse("/${0}/members/${1}", [pageId, uid]); ก็คงจะดีไม่น้อย ได้ใช้บ่อยแน่นอน (ลอกมาจาก facebook api ของ facebook ในส่วนของ FQL)
แล้วก็จะเขียนด้วย TDD/BDD เพราะว่าจะได้ฝึกหัดการเขียนโปรแกรมแบบ TDD ไปในตัว
และสร้างความสนิทสนมกับ Jasmine ด้วย [Jasmine เป็น behavior-driven framework]
เข้าเรื่องกันเลยดีกว่า…
Read this article »
JavaScript มีฟังก์ชั่น parseInt เพื่อเปลี่ยน String อย่างเช่น “8″ ให้เป็น ตัวเลข 8
แต่ถ้าเป็นตัวหนังสือแล้วใช้ operator + มันจะเอา String ไปต่อกัน เพราะ context มันเป็น string
แต่ถ้าใช้ไม่ดีเนี่ย… เราจะเจ็บ
แบบนี้
ลองสั่ง parseInt(“08″) ดูจะได้ 0 เพราะว่าถ้า parseInt เจอ 0 นำหน้าตัวเลขเมื่อไร JavaScript จะคิดว่าอยู่ในโลกของฐาน 8
อาจจะทำให้เราเกิดอาการน้ำตาตกในได้ ถ้าหาบั๊กไม่เจอ
วิธีแก้ไขก็คือ ใช้แบบกำหนด radix เข้าไปเพื่อบอกฐานด้วยเช่น parseInt(“08″, 10);
ภาพประกอบ

credit: JavaScript The Good Parts
JavaScript มีกระบวนการที่คอยแก้ไขโปรแกรมที่มีข้อผิดพลาดโดยการใส่ ; (semi colon) ซึ่งกระบวนการนี้ก็อันตรายไม่ใช่เล่น
ลองดูตัวอย่าง return statement นี้ครับ

กระบวนการแทรก ; (semi colon) จะทำงานเมื่อสิ้นสุดบรรทัดที่ไม่มี semi colon
ใน case นี้ก็ จะกลายเป็น
Read this article »
หลังจากที่ลองใช้ yui3 เป็น test framework แต่ไม่โดนเพราะมันต้องต่อเน็ต
เลยไปลองตัวอื่นดู…
ลองใช้ qunit ก็ยังไม่โดน เลยกะว่าจะใช้ jsunit ซะหน่อย Read this article »
ต่อไปผมจะเขียน blog แบบเป็น blog แล้ว… ติส!