Guest Adventurer 🥉 Lv.1
🪙 50
🔷 10
← กลับคลังเนื้อหา
Article · programming

JavaScript พื้นฐาน EP. 2: ตัวแปรและชนิดข้อมูล

JavaScript

บทเรียนตอนที่ 2 ของซีรีส์ JavaScript คืออะไร? เริ่มต้นเขียนโปรแกรม เรียนรู้การประกาศตัวแปรด้วย let และ const ชนิดข้อมูลพื้นฐาน การตรวจสอบชนิดข้อมูล และการแปลงค่าพร้อมตัวอย่างที่นำไปทดลองได้จริง

EP. 2: รู้จักตัวแปรและชนิดข้อมูล

จากตอนแรกที่เราได้รู้จัก JavaScript และบทบาทของภาษานี้ในการพัฒนาเว็บไซต์ ตอนนี้เราจะเริ่มจัดการข้อมูลด้วยตัวแปร เพราะโปรแกรมส่วนใหญ่จำเป็นต้องเก็บข้อมูลไว้ใช้งาน เช่น ชื่อผู้ใช้ อายุ ราคา จำนวนสินค้า หรือสถานะการเข้าสู่ระบบ เมื่อเข้าใจตัวแปรและชนิดข้อมูลแล้ว เราจะสามารถเขียนโปรแกรมที่รับข้อมูล ประมวลผล และแสดงผลได้อย่างเป็นระบบ
เป้าหมายของตอนนี้เมื่อเรียนจบ คุณจะสามารถประกาศตัวแปรด้วย let และ const อธิบายชนิดข้อมูลพื้นฐาน ใช้ typeof ตรวจสอบชนิดข้อมูล และแปลงข้อความให้เป็นตัวเลขอย่างถูกต้องในสถานการณ์ทั่วไป

1. ตัวแปรคืออะไร?

ตัวแปร (Variable) เปรียบเสมือนช่องที่ใช้เก็บข้อมูลเพื่อเรียกกลับมาใช้งานภายหลัง ใน JavaScript เราสามารถประกาศตัวแปรด้วย let หรือ const ได้ ส่วน var เป็นรูปแบบเดิมที่ยังพบในโค้ดเก่า แต่ผู้เริ่มต้นควรทำความเข้าใจ let และ const ก่อน เพราะช่วยให้กำหนดขอบเขตการใช้งานได้ชัดเจนขึ้น
let userName = 'Mali';
let age = 12;
const siteName = 'LevelLance';

console.log(userName);
console.log(age);
console.log(siteName);

userName = 'Nina';
age = 13;

console.log(userName);
console.log(age);
ตัวแปร userName และ age ประกาศด้วย let จึงสามารถกำหนดค่าใหม่ให้ตัวแปรเดิมได้ ส่วน siteName ประกาศด้วย const จึงไม่สามารถกำหนดค่าใหม่ให้ตัวแปรนั้นได้ หากลองเขียน siteName = 'New Name' โปรแกรมจะเกิด TypeError

ความแตกต่างระหว่าง let และ const

คุณสมบัติletconst
ต้องกำหนดค่าตอนประกาศหรือไม่ไม่จำเป็นจำเป็น
กำหนดค่าใหม่ให้ตัวแปรเดิมทำได้ทำไม่ได้
ขอบเขตการใช้งานBlock scopeBlock scope
เหมาะกับกรณีค่าที่ต้องเปลี่ยนระหว่างทำงานค่าที่ไม่ต้องกำหนดใหม่
แนวทางที่แนะนำเริ่มต้นด้วย const เมื่อไม่จำเป็นต้องกำหนดค่าใหม่ และเปลี่ยนเป็น let เมื่อจำเป็นต้องเปลี่ยนค่าของตัวแปร หลีกเลี่ยงการใช้ var ในโค้ดใหม่หากไม่มีเหตุผลเฉพาะ

2. ตั้งชื่อตัวแปรอย่างไรให้ถูกต้อง?

ชื่อตัวแปรช่วยบอกความหมายของข้อมูล จึงควรตั้งชื่อให้สื่อความหมาย เช่น productPrice, studentName หรือ totalScore ชื่อตัวแปรใน JavaScript แยกตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ดังนั้น totalScore และ totalscore จึงถือเป็นคนละชื่อกัน
  • ชื่อตัวแปรสามารถใช้ตัวอักษร ตัวเลข เครื่องหมายขีดล่าง (_) และเครื่องหมายดอลลาร์ ($) ได้ตามกฎของภาษา
  • ชื่อตัวแปรไม่สามารถเริ่มต้นด้วยตัวเลขได้
  • ห้ามใช้คำสงวนของภาษาเป็นชื่อตัวแปร เช่น const, let หรือ return
  • นิยมใช้ camelCase เช่น firstName, productPrice และ totalAmount
  • ควรเลือกชื่อที่บอกความหมาย แทนชื่อกว้าง ๆ เช่น x หรือ data เมื่อมีชื่อที่ชัดเจนกว่า
const firstName = 'Mali';
const productPrice = 125;
let totalAmount = 0;

 totalAmount = productPrice * 2;

console.log(firstName);
console.log(totalAmount);

3. ชนิดข้อมูลพื้นฐานใน JavaScript

ข้อมูลแต่ละชนิดมีลักษณะและวิธีใช้งานต่างกัน ชนิดข้อมูลที่พบได้บ่อย ได้แก่ String สำหรับข้อความ Number สำหรับตัวเลข Boolean สำหรับค่าจริงหรือเท็จ รวมถึง Undefined, Null, BigInt และ Symbol ส่วน Object ใช้แทนข้อมูลที่มีโครงสร้างซับซ้อนขึ้น และ Array ใช้เก็บรายการข้อมูลหลายค่า
ชนิดข้อมูลตัวอย่างความหมาย
String'สวัสดี'ข้อความ
Number25 หรือ 3.14ตัวเลขจำนวนเต็มหรือทศนิยม
Booleantrue หรือ falseค่าจริงหรือเท็จ
Undefinedlet result;ตัวแปรที่ยังไม่มีค่าที่กำหนดไว้
Nullnullค่าที่ระบุว่าไม่มีข้อมูลโดยตั้งใจ
BigInt12345678901234567890nจำนวนเต็มขนาดใหญ่
SymbolSymbol('id')ค่าที่ไม่ซ้ำกัน ใช้เป็นตัวระบุได้
Object{ name: 'Mali' }ข้อมูลแบบมีคุณสมบัติ
Array['แดง', 'น้ำเงิน']รายการข้อมูลหลายค่า
const name = 'Mali';
const score = 95;
const isPassed = true;
let result;
const emptyValue = null;
const largeNumber = 12345678901234567890n;
const uniqueId = Symbol('id');
const student = { name: 'Mali', score: 95 };
const colors = ['แดง', 'น้ำเงิน', 'เขียว'];

console.log(typeof name);
console.log(typeof score);
console.log(typeof isPassed);
console.log(typeof result);
console.log(typeof emptyValue);
console.log(typeof largeNumber);
console.log(typeof uniqueId);
console.log(typeof student);
console.log(Array.isArray(colors));
ข้อควรจำเกี่ยวกับ typeoftypeof null ให้ผลเป็น 'object' ซึ่งเป็นพฤติกรรมที่สืบทอดมาตั้งแต่ JavaScript รุ่นแรก ๆ ไม่ได้หมายความว่า null เป็น Object จริง ๆ หากต้องตรวจสอบ null ให้เปรียบเทียบด้วย value === null

4. ตรวจสอบชนิดข้อมูลด้วย typeof

ตัวดำเนินการ typeof ช่วยตรวจสอบชนิดข้อมูลของค่าบางประเภทและคืนผลเป็นข้อความ เช่น 'string', 'number', 'boolean' หรือ 'undefined' เครื่องมือนี้มีประโยชน์เมื่อต้องตรวจสอบข้อมูลก่อนนำไปประมวลผล อย่างไรก็ตาม typeof ไม่สามารถแยก Array ออกจาก Object ได้โดยตรง จึงควรใช้ Array.isArray() เมื่อต้องการตรวจสอบว่าเป็นอาร์เรย์หรือไม่
const values = ['Hello', 42, false, undefined, { id: 1 }, [1, 2, 3]];

for (const value of values) {
    console.log(typeof value);
}

const items = [10, 20, 30];
console.log(Array.isArray(items));
console.log(Array.isArray({ length: 3 }));

const value = null;
console.log(value === null);

5. การแปลงชนิดข้อมูล

ข้อมูลที่รับเข้ามาอาจอยู่ในรูปแบบข้อความ แม้จะมีตัวเลขอยู่ภายในก็ตาม ตัวอย่างเช่น '20' เป็น String แต่ 20 เป็น Number หากนำข้อความตัวเลขไปบวกกับตัวเลขโดยตรง JavaScript อาจต่อข้อความแทนการบวกทางคณิตศาสตร์ จึงควรแปลงข้อมูลให้ตรงกับวัตถุประสงค์ก่อนคำนวณ
const textNumber = '20';
const numberValue = Number(textNumber);

console.log(textNumber + 5);
console.log(numberValue + 5);

console.log(Number('12.5'));
console.log(Number('hello'));
console.log(String(100));
console.log(Boolean(1));
console.log(Boolean(0));
ผลลัพธ์ของ '20' + 5 คือ '205' เพราะเป็นการต่อข้อความ แต่ Number('20') + 5 ให้ผลเป็น 25 ส่วน Number('hello') ให้ค่า NaN ซึ่งหมายถึงผลลัพธ์ที่ไม่ใช่ตัวเลขที่ถูกต้อง ควรตรวจสอบด้วย Number.isNaN() เมื่อข้อมูลอาจแปลงเป็นตัวเลขไม่ได้
function parseScore(input) {
    const score = Number(input);

    if (input.trim() === '' || Number.isNaN(score)) {
        return 'กรุณากรอกตัวเลขที่ถูกต้อง';
    }

    if (score < 0 || score > 100) {
        return 'คะแนนต้องอยู่ระหว่าง 0 ถึง 100';
    }

    return `คะแนนของคุณคือ ${score}`;
}

console.log(parseScore('85'));
console.log(parseScore('abc'));
console.log(parseScore('120'));
ความแตกต่างระหว่าง Number และ parseIntNumber('12.8') ได้ 12.8 ขณะที่ parseInt('12.8', 10) ได้ 12 เพราะ parseInt อ่านจำนวนเต็มจากข้อความ ส่วน parseFloat('12.8') ได้ 12.8 การเลือกใช้ขึ้นอยู่กับรูปแบบข้อมูลที่ต้องการ

6. การคำนวณด้วยตัวแปร

เมื่อเก็บข้อมูลไว้ในตัวแปรแล้ว เราสามารถนำตัวแปรมาใช้คำนวณได้ เช่น คำนวณราคารวมของสินค้า ส่วนลด หรือคะแนนเฉลี่ย การแยกค่าที่ต้องใช้คำนวณเป็นตัวแปรทำให้โค้ดอ่านง่ายและแก้ไขได้สะดวก
const productPrice = 250;
const quantity = 3;
const discountRate = 0.10;

const subtotal = productPrice * quantity;
const discount = subtotal * discountRate;
const total = subtotal - discount;

console.log('ราคาก่อนลด:', subtotal);
console.log('ส่วนลด:', discount);
console.log('ราคาสุทธิ:', total);
ตัวอย่างนี้กำหนดราคาสินค้า 250 บาท จำนวน 3 ชิ้น จึงมีราคาก่อนลด 750 บาท เมื่อคิดส่วนลด 10% จะลด 75 บาท และเหลือราคาสุทธิ 675 บาท การตั้งชื่อ subtotal, discount และ total ช่วยให้เห็นขั้นตอนการคำนวณอย่างชัดเจน

7. แบบฝึกหัดท้ายบท

ลองทำโจทย์ต่อไปนี้ด้วยตนเองก่อนดูเฉลย คุณสามารถนำโค้ดไปทดลองใน Developer Console ของเบราว์เซอร์หรือสภาพแวดล้อม JavaScript ที่ใช้งานอยู่ได้

โจทย์ที่ 1: ประกาศตัวแปร

ประกาศตัวแปรชื่อ studentName ให้เก็บชื่อของนักเรียนด้วย const และประกาศตัวแปร score ด้วย let เพื่อเก็บคะแนน 80 จากนั้นเปลี่ยนคะแนนเป็น 90 แล้วแสดงชื่อและคะแนน

โจทย์ที่ 2: ตรวจสอบชนิดข้อมูล

กำหนดตัวแปร price ให้มีค่าเป็น 199.5 และตัวแปร isAvailable ให้มีค่าเป็น true จากนั้นใช้ typeof ตรวจสอบชนิดข้อมูลของทั้งสองตัวแปร

โจทย์ที่ 3: แปลงข้อความเป็นตัวเลข

กำหนดข้อความ quantityText = '4' แล้วแปลงเป็น Number ก่อนคูณด้วยราคาต่อชิ้น 35 บาท ผลลัพธ์ที่ต้องการคือราคารวม 140 บาท

เฉลยตัวอย่าง

const studentName = 'Mali';
let score = 80;
score = 90;
console.log(studentName, score);

const price = 199.5;
const isAvailable = true;
console.log(typeof price);
console.log(typeof isAvailable);

const quantityText = '4';
const quantity = Number(quantityText);
const unitPrice = 35;
const totalPrice = quantity * unitPrice;
console.log(totalPrice);

สรุปท้ายบท

ตัวแปรช่วยเก็บข้อมูลเพื่อเรียกใช้งานซ้ำ let เหมาะกับค่าที่อาจเปลี่ยน ส่วน const เหมาะกับค่าที่ไม่ต้องกำหนดใหม่ ชนิดข้อมูลพื้นฐานประกอบด้วย String, Number, Boolean, Undefined, Null, BigInt และ Symbol ขณะที่ Object และ Array ช่วยจัดเก็บข้อมูลที่มีโครงสร้าง การใช้ typeof และการแปลงชนิดข้อมูลอย่างเหมาะสมจะช่วยลดข้อผิดพลาดในการคำนวณและเตรียมความพร้อมสำหรับตอนถัดไป
ตอนถัดไป: ตัวดำเนินการและนิพจน์EP. 3 จะพาไปรู้จักตัวดำเนินการทางคณิตศาสตร์ การเปรียบเทียบ การใช้ === แทนการเปรียบเทียบแบบหลวม และการสร้างนิพจน์เพื่อให้โปรแกรมตัดสินใจจากข้อมูลได้ถูกต้อง
อ่านจนถึงระยะ 500px ก่อนท้ายหน้าและอยู่ในหน้านี้อย่างน้อย 5 นาที เพื่อรับ EXP วันละครั้ง

⏳ กำลังจับเวลาอ่าน...

🌐
เลือกภาษา / Select Language
21 World Languages Supported