เริ่มต้นเรียนรู้การเขียนโปรแกรมด้วย Node.js ตอนที่ 3 ตัวแปร ( Variable )
สวัสดีสำหรับการหัดเรียนหัดเขียนโปรแกรมด้วย Node.js ตอนที่ 3 ว่าด้วยเรื่องของตัวแปร ตามจริงตอนนี้ไม่อยากจะกล่าวถึง ถ้าคนที่มีพื้นฐานในการเขียนโปรแกรมมาแล้ว แต่ถ้าคนที่ยังไม่มีพื้นฐานในการเขียนโปรแกรมก็เห็นจะมองข้ามในเรื่องของ "ตัวแปร" ไม่ได้ เอาเป็นว่าผมจะเกริ่นถึงเรื่องของตัวแปรใน Node.js เท่าที่ผมทราบนะครับ เพราะผมเองก็อยู่ในช่วงหัดเขียนโปรแกรมด้วย Node.js เช่นกัน เริ่มเลย !
ตัวแปร คือ อะไร ?
ตัวแปร คือ คำหรืออักษรที่ใช้ในการเก็บค่า ทำหน้าที่คล้ายกับ "สมการ" ในวิชาคณิตศาสตร์ หากจำไม่ผิดสมัยผมเรียนตั้งแต่เมื่อสมัย ม.1 เรื่อง "สมการ"
ตัวอย่าง
x + 2 = 5
x - 10 = 20
15 + x = 25
25 -10 = x
ประมาณนี้ครับ จากสูตรสมการข้างบน จะเห็นได้ว่า x คือตัวแปรที่ใช้ในการเก็บค่า
ข้อที่ 1. x + 2 = 5 ดังนั้น x = 3
ข้อที่ 2. x - 10 = 20 ดังนั้น x = 30
ข้อที่ 3. 15 + x = 25 ดังนั้น x = 10
ข้อที่ 4. 25 - 10 = x ดังนั้น x = 15
ทุกวันนี้ เขียนเรียนสมการตั้งแต่ประถม เด็กประถมก็ตอบได้ ว่าค่า x ได้เท่าไหร่ ผมคงไม่อธิบายว่า ข้อแรก ต้องเอา คำตอบ คือ 5 มาลบกับ 2 ได้เท่ากับ 3 นะครับ เอาแค่ว่า x คือตัวแปร ก็เพียงพอแล้ว
ดังนั้น ในทางการเขียนโปรแกรมคอมพิวเตอร์ ไม่ว่าจะเป็นภาษา JAVA, Python, PHP หรืออื่นๆ ก็แล้วแต่ ย่อมต้องมีการประกาศตัวแปรขึ้นมาใช้งานเสมอ และไม่จำกัดว่าต้องเป็นตัวอักษรเดี่ยวๆ อย่างเช่น X เท่านั้น
ทำไมจึงต้องใช้ตัวแปร
ในการเขียนโปรแกรมที่ใหญ่ๆ นั้น หลากหลายวิธีการเขียน ไม่ว่าจะเป็นแบบโครงสร้างหรือแบบ OOP ก็ตามแต่ มันคงยากที่เราจะเขียนโค๊ดโปรแกรมยาวเป็นหางว่าว แม้เครื่องมือที่ใช้จะช่วยให้เราเขียนโปรแกรมได้เร็วก็ดี แต่หากไม่มีการใช้ตัวแปรเมื่อเวลาเกิดปัญหาในการเขียนโค๊ดก็จะไล่หา Error ได้ยาก เพราะต้องมาค่อยๆไล่ว่าโค๊ดนี้ไปที่ไหน โค๊ดนี้ไปอย่างไร แต่ถ้ามีการประกาศตัวแปรก็จะสะดวกในการแก้ Error และคนที่มาแก้ Error ต่อจากเราก็ย่อมจะรู้จุดแก้ปัญหา
ตัวอย่าง การไม่ประกาศตัวแปร
console.log(req.body.name);
console.log(req.body.password);
console.log(req.body.department);
จากตัวอย่างโค๊ดด้านบน ผมรับค่าจากฟอร์มมาแสดงผลออก console.log จะเห็นได้ว่า ต้องมาพิมพ์ req.body ทุกครั้ง เวลาที่เราต้องการใช้งานค่า name ที่บรรทัดแรก เราก็ต้องพิมพ์ req.body.name เสมอ (สังเกตว่าต้องมี req.body นำหน้าทุกครั้ง) มันทำให้เราเขียนโค๊ดที่ยาวขึ้นในเวลาที่เรานำไปใช้งาน
ถ้าหากเรามีการประกาศตัวแปรขึ้นมาละครับ
ตัวอย่าง การประกาศตัวแปร
var name;
var password;
var department;
name = req.body.name;
password = req.body.password;
department = req.boy.department;
console.log(name);
console.log(password);
console.log(department);
จากตัวอย่างด้านบน จะมีการประกาศตัวแปรขึ้นมา 3 ตัว คือ name, password, department (สังเกตคำที่ขึ้นต้นด้วย var ) จากนั้นนำค่า req.body.name มาเก็บไว้ใน name และ req.body.password มาเก็บไว้ใน password และ req.body.department มาเก็บไว้ใน department จากนั้นนำค่าทั้งสามไปแสดงผลด้วย console.log จะไม่ต้องพิมพ์ req.body นำหน้าอีกเลย
#อาจจะมีคำถามถามมาว่า ตัวอย่างด้านบนที่ไม่ประกาสตัวแปรพิมพ์น้อยกว่าตัวอย่างด้านล่างเยอะ อธิบายไว้ก่อนว่า ตัวแปรที่ประกาศขึ้นมานี้ สามารถในไปใช้งานที่ใดก็ได้ในไฟล์ที่เราเขียน เช่นการนำไปเก็บไว้ในฐานข้อมูล เป็นต้น
หลักการประกาศตัวแปร
หลักในการประกาศตัวแปรในการเขียนโปรแกรมหลายๆภาษา มีหลักการในการประกาศตัวแปร ดังนี้
1. การประกาศตัวแปร ต้องสื่อถึงสิ่งที่เราต้องการจะอ้างอิงถึงชื่อหรือคุณสมบัตินั้นๆ จะเป็นอะไรก็ได้ที่มองดูแล้วรู้ปุ๊บว่า นี่คือตัวแปรของชื่อหรือคุณสมบัตินั้นๆ อย่างเช่น รับค่าจากฟอร์มที่กรอกหน้าเว็บว่า "ชื่อ" แน่นอนว่าชื่อในภาษาอังกฤษคือ name ดังนั้นเราควรประกาศชื่อตัวแปรและเก็บค่าจากฟอร์มที่กรอกหน้าเว็บว่า
var name = req.body.name ;
หากถามว่าเอาตัวอื่นได้ไหม ก็ต้องตอบว่า ได้ครับ จะตั้งชื่อว่า X ก็ได้ เช่น
var X = req.body.name;
แต่ปัญหาจะเกิดขึ้นเมื่อนำ X ไปใช้งาน ซึ่งบางคนหรือผู้ร่วมพัฒนาโปรแกรมด้วย จะไม่รู้ว่า X คืออะไร และมาจากไหน บางครั้งการใช้ X แทน name บ่อยในโปรแกรมคนที่จะงงก็คือตัวคุณเองครับ
2. ชื่อของตัวแปรที่ประกาศจะต้องไม่ซ้ำกับคำสงวนของโปรแกรม คำสงวนคืออะไรล่ะ ? ผมเองก็บอกยากเหมือนกัน เพราะคำสงวนมีค่อนข้างเยอะ แต่เอาเท่าที่ผมรู้ละกันครับ
var
const
let
public
private
static
require
console
if
else
while
do
for
ฯลฯ
เอาเป็นว่า หากเราเขียนโค๊ดตัวโปรแกรมหรือเครื่องมือที่ใช้เขียนจะเป็นตัวแดงๆให้เองละเนอะ
3. การประกาศชื่อตัวแปรต้องไม่มีอักขระพิเศษ อักขระพิเศษ ได้แก่ ; ,"", -, [ ,] ,{ ,} ,+,-,*,/,@,(,),%,$ พวกอักขระที่ไม่ใช่ภาษาละกันครับ
การประกาศตัวแปร
ในการประกาศตัวแปรใน Node.js จะมีอยู่ ขอบเขตอยู่ 3 ชนิดคือ
1. var มีขอบเขตการทำงานในระดับ function
ตัวอย่าง การประกาศตัวแปรด้วย var
ผลลัพธ์ คือ 20 เพราะเราประกาศค่า a=10 แล้วมาประกาศในบล็อกสโค๊ป(block scope)อีกครั้ง a=20 ดังนั้นค่า a จึงเปลี่ยนเป็น 20 หากเรานำตัวแปร a ไปใช้งาน จะได้ค่า 20 นั่นหมายถึง การประกาศตัวแปรด้วย var ค่าตัวแปรจะสามารถแก้ไขได้
2. let มีขอบเขตการทำงานในระดับ block เมื่อมีการประกาศตัวแปรใน block หรือ(ที่มีเครื่องหมายปีกกา { }) ตัวแปรจะทำงานแค่ใน block นั้นๆ
ตัวอย่าง การประกาศตัวแปรด้วย let
ผลลัพธ์ใน block คือ 20 และ นอก block คือ 10 เนื่องจาก ตัวแปร let ทำงานใน block เท่านั้น
3.const เป็นการประกาศตัวแปรแบบค่าคงที่ ไม่สามารถประกาศซ้ำได้
ตัวอย่าง การประกาศตัวแปรด้วย const
เมื่อประกาศตัวแปรด้วย const แล้วมีการนำไปประกาศซ้ำ โปรแกรมจะแสดง error ออกมาว่า 'a' has already been dclared ซึ่งหมายความว่า ตัวแปร a มีการประกาศใช้งานแล้ว
สรุป
ตัวแปรมีไว้เก็บค่าต่างๆไม่ว่าจะเป็นตัวเลขหรือตัวอักษร ในการประกาศตัวแปรมีสามรูปแบบคือ var, let และ const การจะประกาศตัวแปรจะเลือกแบบใดก้ได้ ถ้าชื่อตัวแปรไม่ซ้ำกัน และไม่ซ้ำกับอักขระพิเศษ หรือคำ สงวน ก็สามารถประกาศตัวแปรได้
บทความนี้อาจจะมีผิดพลาดประการใด ขออภัยมา ณ ที่นี้ด้วยครับ เพราะผมเองก็หัดเขียนโปรแกรมด้วย Node.js เป็นครั้งแรกเช่นกัน
ขอบคุณครับ
ความคิดเห็น