การสร้างโลกใบใหม่ใน JavaScript

 - by NAzT

วันนี้มาพูดถึง ใน แบบเบาๆกันหน่อย เรื่องScope ใน มีรายละเอียดให้เราได้เคลิบเคลิ้มกันอีกนาน

ซึ่งการสร้าง Scope ใน JavaScript สามารถทำได้ด้วยโค้ดแบบนี้ครับ

ถ้าเราไม่สร้าง scope ใหม่แล้วประกาศตัวแปรตรงๆเลย มันจะเป็น global (windows) โอกาสที่ตัวแปรจะไปชนกันกับของคนอื่นก็จะมีเยอะกว่า เพราะใน JavaScript ถึงจะประกาศตัวแปรด้านล่างก็เห็นทั้งไฟล์อยู่ดี แต่ถ้าเราสร้างโลกของเราแล้วก็จะมั่นใจมากขึ้นว่าตัวแปรของเราจะไม่ตีกับใคร

เราอาจจะได้เจอโค้ดลักษณะนี้

จากตัวอย่างคือสร้างโลกและส่งตัวแปร เข้าไปให้สิงอยู่ในตัวแปร $ ซึ่งเป็น local variable แล้วในโลกนั้นก็เรียก $ แทน ได้อย่างสบายใจไม่ต้องกลัวไปตีกับคนอื่น่

ตัวแปร this ใน javascript ทำงานยังไง (เกี่ยวกับ Function Invocation Pattern)

 - by NAzT

ถ้าพูดถึงตัวแปร ในโลกของการเขียนโปรแกรมแบบ Oriented ผมจะตีความตัวแปร this ว่ามันจะต้องหมายถึงตัว นั้นๆ ที่กำลังทำงานอยู่ เป็นแน่แท้…..

แต่มันไม่ใช่แบบนั้นใน น่ะสิ!! …. อ้าวอ้าว ยังไง ตอบมาให้เคลียร์เลย Read this article »

Javascript สั้นๆ ตอน Array ปลอมๆ [แล้วจะรู้ได้ยังไงว่าเป็น Array หรือ Object]

 - by NAzT

ใน ไม่มีข้อมูลที่เป็น จริงๆ

Array ที่มีอยู่มัน array แบบหลอกๆ จริงแล้วมันเป็น ที่มี key เป็นตัวเลข, มี method เกี่ยวกับ array, และมี property length

ถ้าเราพึ่งคำสั่ง typeof อย่างเดียวเราก็จะเจ็บอีกตามเคย

javascript-phony-array

กล่าวคือถ้าเราสั่ง typeof [] และ typeof {} มันจะบอกว่า เป็น object ทั้งคู่! แบบนี้
NAzT_s Blog Read this article »

มาทำโปรเจ็ค JavaScript แบบใช้ TDD กันไหมครับ .. แบบหัดๆ

 - by NAzT

พอดีผมไปหา code เก่า… แล้วเจอ code ที่เขียนแบบนี้

var graph_url = '/' + pageId + '/members/' + uid;

ปวดตับมาก code แม่งดูโคตรยากเลย ต่อ string กันกระจาย…

ก็เลยคิดว่าถ้าเราเขียนฟังก์ชั่นทำ แบบนี้
str_parse("/${0}/members/${1}", [pageId, uid]); ก็คงจะดีไม่น้อย ได้ใช้บ่อยแน่นอน (ลอกมาจาก facebook api ของ facebook ในส่วนของ FQL)

แล้วก็จะเขียนด้วย / เพราะว่าจะได้ฝึกหัดการเขียนโปรแกรมแบบ TDD ไปในตัว
และสร้างความสนิทสนมกับ ด้วย [ เป็น behavior-driven ]

เข้าเรื่องกันเลยดีกว่า…

Read this article »

Javascript สั้นๆ ตอน parseInt ใช้ไม่ดี เจ็บ!

 - by NAzT

มีฟังก์ชั่น เพื่อเปลี่ยน String อย่างเช่น “8″ ให้เป็น ตัวเลข 8

แต่ถ้าเป็นตัวหนังสือแล้วใช้ operator + มันจะเอา String ไปต่อกัน เพราะ context มันเป็น string

แต่ถ้าใช้ไม่ดีเนี่ย…​ เราจะเจ็บ

แบบนี้

ลองสั่ง parseInt(“08″) ดูจะได้ 0 เพราะว่าถ้า parseInt เจอ 0 นำหน้าตัวเลขเมื่อไร JavaScript จะคิดว่าอยู่ในโลกของฐาน 8

อาจจะทำให้เราเกิดอาการน้ำตาตกในได้ ถ้าหาบั๊กไม่เจอ

วิธีแก้ไขก็คือ ใช้แบบกำหนด เข้าไปเพื่อบอกฐานด้วยเช่น parseInt(“08″, 10);

ภาพประกอบ

Nat%20Weerawan

 

credit:  JavaScript The Good Parts

Javascript สั้นๆ ตอน Semicolon Insertion [Awful Parts]

 - by NAzT

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

ลองดูตัวอย่าง return statement นี้ครับ

%E0%B9%80%E0%B8%A3%E0%B8%B7%E0%B9%88%E0%B8%AD%E0%B8%87%20%E2%80%B9%20NAzT_s%20Blog%20%E2%80%94%20%E0%B9%80%E0%B8%A7%E0%B8%B4%E0%B8%A3%E0%B9%8C%E0%B8%94%E0%B9%80%E0%B8%9E%E0%B8%A3%E0%B8%AA

กระบวนการแทรก ; (semi colon) จะทำงานเมื่อสิ้นสุดบรรทัดที่ไม่มี semi colon

ใน case นี้ก็ จะกลายเป็น

return; Read this article »

BDD framework สำหรับ javascript

 - by NAzT

หลังจากที่ลองใช้ yui3 เป็น แต่ไม่โดนเพราะมันต้องต่อเน็ต

เลยไปลองตัวอื่นดู…

ลองใช้ qunit ก็ยังไม่โดน เลยกะว่าจะใช้ jsunit ซะหน่อย Read this article »

เขียน Blog แบบ blog

 - by NAzT

ต่อไปผมจะเขียน blog แบบเป็น blog แล้ว…​ ติส!