ข้ามไปที่เนื้อหาหลัก

เริ่มต้นเรียนรู้การเขียนโปรแกรมด้วย Node.js ตอนที่ 3 ตัวแปร ( Variable )

 เริ่มต้นเรียนรู้การเขียนโปรแกรมด้วย 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 เป็นครั้งแรกเช่นกัน 

ขอบคุณครับ 

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ส่วนประกอบของเมนบอร์ด คอมพิวเตอร์ PC

ส่วนประกอบของเมนบอร์ด คอมพิวเตอร์ PC เมนบอร์ดเป็นแผงวงจรหลักที่สำคัญที่สุดของคอมพิวเตอร์ ดังนั้น จึงควรรู้จักตำแหน่งของอุปกรณ์ต่างบนเมนบอร์ดเสียก่อน จึงจะสามารถประกอบเครื่องคอมพิวเตอร์ได้ อุปกรณ์หลักที่สำคัญก็มีช็อกเกตสำหรับติดตั้งซีพียู, ช็อกเกตแรม และซิปเซตที่ทำหน้าที่ควบคุมอุปกรณ์ทั้งหมด หัวต่อและสล็อตสำหรับติดตั้งอุปกรณ์และการ์ดต่างๆ รวมไปถึงหัวต่อกับอุปกรณ์ภายนอกที่ต่อออกทางด้านหลังเครื่อง อุปกรณ์ที่ติดตั้งบนเมนบอร์ดได้แก่  1. ช็อกเกตซีพียู (CPU Socket) ช็อกเกตซีพียู เป็นตำแหน่งติดตั้งซีพียู โดยรูปแบบของช็อกเกตจะแตกต่างกันไปตามยี่ห้อและรุ่นของซีพียู การซื้อเมนบอร์ดจะต้องตรวจสอบว่าต้องการใช้กับซีพียูยี่ห้อใดและรุ่นไหน หากซื้อซีพียูที่มีช็อกเกตไม่ตรงกับเมนบอร์ดจะไม่สามารถใช้งานได้ ปัจจุบันจะมีช็อกเกตที่ใช้งานบนเมนบอร์ดคือ Intel LGA 775,  Intel LGA 1150, Intel LGA 1151, Intel LGA1155 และ Intel LGA 2066 ใช้สำหรับซีพียู Intel ทั้งหมด แต่ต้องดูด้วยว่า ซีพียู อินเทลใดใช้ช็อกเกตเท่าไหร่ ส่วน AMD AM4, AMD sTRX4 และ AMD TR4 จะใช้สำหรับ CPU AMD เท่านั้นซึ่งก็เหมือนกับอินเทล ซี

รวม Code Debug Card Mainboard

รวม Code Debug Card Mainboard สำหรับช่างซ่อมคอมมือใหม่ที่มีเครื่องมือ Debug Card เป็นตัวช่วยแล้ว บางครั้งอาจจะไม่รู้ว่าค่า Error Code นั้นคืออะไร ผมได้สืบหาข้อมูลและเขียนเพื่อเตือนความจำของตนเองไว้ เพราะไม่ค่อยได้ใช้ตัว Debug Card นี้เช่นกัน นานๆครั้งมาใช้นั้น ค่อนข้างที่จะค้นหาข้อมูลอย่างลำบากเช่นกัน ผมจึงได้รวบรวมข้อมูลมาจากเว็บที่หาข้อมูลได้ ขอขอบคุณเจ้าของข้อมูลด้วยครับ CODE : ความหมาย 00 : ไม่มีสัญญาณให้เช็ค CPU หรือลองหา CPU ตัวใหม่มาเปลี่ยนดูครับ 01 : CPU TEST รอบที่ 1 02 : CPU TEST รอบที่ 2 04 : TEST Memory รีเฟรช ของอุปกรณ์ ต่าง ๆ  05 : Key board controller อาจมีปัญหา 07 : BIOS battery อาจจะหมด 0B : TEST cmos checksum 0D : เช็ค VGA CARD Interface C0 : ทดสอบหน่วยความจำและ slot(ลองฉีด สเปรย์สารพัดพิษดูครับ) 0E : เช็คหน่วยความจำ VGA(ลองหาตัวใหม่มาเปลี่ยนดูครับ)  11 :อาจมีปัญหาที่ DMA controller 41 : ให้ตรวจสอบ FLOPPY Drive 42 : .ให้ตรวจสอบ HARD DISK 43 : ค้นหาและตรวจสอบ serial และ parallel port 45 : ให้เช็ค Mainboard ว่าเข้ากับ CPU ไ

พอร์ตเชื่อมต่อต่างๆบนเมนบอร์ด

พอร์ตเชื่อมต่อต่างๆบนเมนบอร์ด พอร์ตเชื่อมต่อแบบต่างๆ คือ หัวต่อที่ใช้เชื่อมต่อกับอุปกรณ์ภายนอก เช่น คีย์บอร์ด เมาส์ และเครื่องพิมพ์ สายแลน เป็นต้น ลักษณะของหัวต่อแต่ละแบบจะมีมาตรฐานและแตกต่างกันออกไปอยู่แล้ว จึงไม่ต้องกังวลว่าจะเสียบผิดรูปแบบ เพราะแต่ละหัวต่อจะมีรูปแบบไม่เหมือนกัน พอร์ตเชื่อมต่อต่างๆบนเมนบอร์ด มีดังนี้ 1. หัวต่อคีย์บอร์ดหรือเมาส์แบบ PS2 จะใช้คีย์บอร์ดก็ได้ หรือเมาส์ก็ได้ ปัจจุบันหัวต่อ PS2 ได้เลิกใช้งานไปแล้ว 2. หัวต่อ USB 2.0 ใช้สำหรับเชื่อมต่อ อุปกรณ์ต่างๆที่ใช้สาย USB ต่าง ความเร็วในการโอนถ่ายข้อมูล USB 2.0 นี้มีมากถึง 480 Mbps  3. หัวต่อจอภาพ แบบ Display port ใช้สำหรับเชื่อมต่อจอภาพที่เป็นประเภท Display port ส่งข้อมูลภาพได้สูง เหมาะสำหรับทำ Multi Display หรือการเชื่อมต่อหลายๆจอภาพ 4. หัวต่อจอภาพแบบ HDMI ปัจจุบัน (ปี 2020) เริ่มมีการใช้มากขึ้น เนื่องจากส่งข้อมูลความละเอียดภาพได้มากถึง 4K และอนาคตจะมีการพัฒนาเพิ่มขึ้นอีก 5. หัวต่อจอภาพแบบ DVI เป็นการพัฒนาการส่งออกจอภาพต่อจาก VGA เป็นช่วงเวลานึง ปัจจุบันจะไม่ค่อยมีใช้แล้ว 6. หัวต่อจอภาพแบบ VGA ใช