ทิ้งไปนาน เขียนต่อซะหน่อยเดี๊ยวลืม สำหรับตอนนี้ก็บอกกันตรงๆ เลยละกันว่าแปลมาจากหนังสือเล่มเดิมที่เคยบอกไปเมื่อตอนที่แล้ว สามบท เริ่มเลยละกัน
Syntax
พื้นฐานของ ECMAScript มีด้วยกันไม่กี่อย่างตามด้านล่างนี้คือ
- ทุกอย่าง case-sensitive เหมือนกับภาษา Java, C จริงๆ ข้อนี้ก็เหมือนกันเกือบทุกภาษาหละนะ ยกเว้น VB6 ไว้ภาษาที่ตรงข้าม(อาจมีภาษาอื่นอีกแต่ที่ผมเคยเจอมีอยู่ภาษาเดียว)
- ประเภทตัวแปรเปลี่ยนประเภทไปตามค่าที่ใส่เข้ามา (loosely type) โดยดูได้จากวิธีประกาศตัวแปรใน javascript ที่ไม่ต้องมีการบอกประเภทว่า ตัวแปรนี้เป็นชนิดไหน แต่ดูจากค่าที่ใส่เข้ามาได้เลย ถ้าค่าที่ใส่เป็นตัวเลข ตัวแปรนั้นก็จะเป็นประเภทตัวเลข สำหรับ Actionscript3 จะต่างจาก ECMAScript3 หน่อยคือ ตัวแปรสามารถกำหนดประเภทได้ โดยเมื่อประกาศประเภทไปแล้วก็จะไม่สามารถเปลี่ยนได้อีก แต่จะไม่ประกาศก็ได้ ดังนั้น Actionscript3 จึงมีทั้งสองแบบ โดยตัวอย่างวิธีประกาศตัวแปรใน ECMAScript3 คือ
var color = "red"; var num = 25; var visible = true;
แต่สำหรับ Actionscript จะสามารถทำเพิ่มได้คือ
var color:String = "red"; var num:Number = 25; var visible:Boolean = true;
- ท้ายบรรทัดจะใส่ semi-colon หรือไม่ใส่ก็ได้ ดูตัวอย่างเลยละกัน
var color = "red" var number = 25;
จากด้านบน บรรทัดแรก ถือว่ายังถูก syntax แต่จะไม่สามารถประกาศตัวแปรต่อกันในบรรทัดเดียวได้เท่านั้นเอง หากจะเขียน syntax อื่นต่อต้องใส่ “;” เพื่อบอกว่าจบคำสั่งแต่ละคำสั่งที่ไหน
- comment เหมือนภาษาจาวา ซี และ PHP คือ ใช้ “//” และ “/* */” โดยอันแรกไว้สำหรับ comment ทั้งบรรทัด 1 บรรทัดส่วนอันที่สองไว้บอกว่าจะ comment ช่วงไหนถึงช่วงไหน จะหลาย บรรทัดหรือบรรทัดเดียวก็ได้ เช่น
// นี่คือการ comment ทั้งบรรทัด /* บรรทัดที่ 1 บรรทัดที่ 2 บรรทัดที่ 3*/
- ปีกกา “{” ไว้กำหนดขอบเขตของโค้ด อันนี้ก็เหมือนพวกภาษาที่เอามาจากซีอีกนั่นแหละ เช่น
if (test1 == "red") { test1 = "blue" alert(test1) }
ดูจากด้านบนแล้ว คิดว่าคนที่เคยเขียนภาษาซี หรือจาวามาก่อนคงเขียน javascript หรือ actionscript ได้ไม่ยากเท่าไหร่ เพราะรูปแบบนั้นค่อนข้างคล้ายกันมาก จะมีต่างกันก็นิดหน่อยเรื่องตัวแปร ไว้ดูกันต่อไปละกัน
ตัวแปร
จากด้านบนที่ผ่านมา มีการประกาศตัวแปรพอเป็นตัวอย่างมาบ้างแล้ว คือใช้ keyword var ตามด้วยชื่อตัวแปร และ ค่าเริ่มตัน เช่น
var color = "blue"
ถ้าหากว่าต้องการสร้างตัวแปรหลายๆ ตัวในบรรทัดเดียวก็สามารถใช้ “,” คั่นระหว่างตัวแปรแต่ละตัวได้เช่น
var color, number, visible var height = 10, width = 10, title = "hello, world"
นอกจากนี้ ตัวแปรสามารถเปลี่ยนประเภทได้ ด้วยหลังจากที่เรียกใช้ตัวแปรไปแล้ว เช่น
var color = "red" alert(color) //ตัวแปร color เป็นประเภท String color = 0x0000FF alert(color) //ตอนนี้เป็นประเภทตัวเลขแล้ว
สำหรับการตั้งชื่อตัวแปรมีข้อกำหนดแค่สองอย่างคือ
- ชื่อตัวแปรต้องขึ้นต้นด้วยตัวอักษร เครื่องหมาย “_” และ $ เท่านั้น
- ตัวอักษรที่เหลือจะเป็นตัวอักษร เครื่องหมาย “_” เครื่องหมาย $ หรือตัวเลขก็ได้
เช่น
var test var $test var $1 var _$te$t2 //อันนี้คงไม่มีใครใช้ไช่มะ - -?
สำหรับคำแนะนำในการตั้งชื่อตัวแปรก็มีรูปแบบต่างๆ ตามด้านล่างนี้คือ
- แบบ Camel Notation คือ ตัวอักษรตัวแรกของคำใช้ตัวเล็ก ตัวอักษรตัวแรกของคำถัดไปในชื่อตัวแปรใช้ตัวใหญ่ เช่น
var myTestValue = 0, mySecondTestValue = "hi"
- แบบ Pascal Notation คือ ตัวอักษรตัวแรกตัวใหญ่ ที่เหลือเหมือน Camel Notation เช่น
var MyTestValue = 0, MySecondTestValue = "hi"
- Hungarian Type Notation คือเติมตัวอักษรตัวเล็กหนึ่งตัวไปหน้า ตัวแปรแบบ Pascal Notation เพื่อบอกว่าตัวแปรนี้เป็นประเภทอะไรเช่น
var iMyTestValue = 0, sMySecondTestValue = "hi"
เรื่องน่าสนใจอย่างหนึ่งเกี่ยวกับตัวแปรใน ECMAScript คือ ตัวแปรไม่จำเป็นต้องถูกประกาศก่อนนำมาใช้งาน สามารถใส่ชื่อตัวแปรและค่าได้เลย แต่ใน Actionscript3 จะไม่สามารถทำอย่างนั้นได้แล้ว เช่น
var sTest = "hello" sTest2 = sTest + "world" alert(sTest2) //บรรทัดนี้จะขึ้นกล่องออกมาว่า "hello world"
Keyword
ECMA-262 กำหนดกลุ่มของ Keyword ที่ ECMAScript รองรับไว้ โดย Keyword เหล่านี้จะไปอยู่ที่ต้น หรือท้ายของคำสั่งต่างๆ และคำต่างๆ ที่เป็น Keyword และ Reserve เหล่านี้จะไม่สามารถนำไปใช้เป็นชื่อตัวแปรได้
สำหรับ Keyword ก็มีตามด้านล่างนี้
break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof
ถ้าใช้คำเหล่านี้เป็นชื่อตัวแปร เมื่อรันแล้วจะเจอกับ Error ว่า “Identifier expected”
Reserved word
Reserved word คือคำที่เก็บไว้สำหรับเป็น Keyword ในอนาคต โดยคำเหล่านี้จะไม่สามารถใช้เป็นชื่อตัวแปรได้เช่นเดียวกับ Keyword
abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public
คำเหล่านี้ถ้ามันยังเป็น Reserved word อยู่ ก็จะไม่เกิด error ใดๆ แต่ถ้ามีการใช้ขึ้นมาในรุ่นถัดไปก็จะเจอ error เหมือน keyword ซึ่งใน Actionscript3 ก็ใช้ไปซะเกือบหมดซะแล้วด้วยสิ (ยกเว้น synchronized volatile กับอีกสองสามคำ)
ยาวและ ตอนแรกคิดว่าจะเอาให้จบในสองตอน แต่คิดไปคิดมา เอาให้หมดไปเลยละกัน ;p ไว้ต่อพรุ่งนี้หละ วันนี้เนทเน่าได้ใจมาก