Programming Track
JavaScript
Primitive Types
Template literals
ใช้ backtick เขียน string พร้อมแทรกค่าตัวแปรด้วย ${} โดยไม่ต้องเชื่อมด้วย + และเขียนหลายบรรทัดได้โดยไม่ต้องใช้ \n
ใช้ backtick แทรกค่าตัวแปรลงใน string ได้โดยตรง
Template Literal คือวิธีเขียน string ด้วย backtick (`` ` ``) แทน single/double quote (`'` หรือ `"`) ข้อดี: แทรกค่าตัวแปรลงใน string ได้เลย ไม่ต้องใช้ `+` มาต่อทีละท่อน ผลลัพธ์ยังเป็น `string` เหมือนเดิม
เทียบ string ทั่วไป กับ Template LiteralJS
// วิธีเดิม — ต้องเชื่อมด้วย + และใส่ช่องว่างเอง
let name = "Sompong";
let greeting1 = "Hello, " + name + "!";
// Template Literal — แทรกค่าด้วย ${} ได้เลย
let greeting2 = `Hello, ${name}!`;
console.log(greeting1); // "Hello, Sompong!"
console.log(greeting2); // "Hello, Sompong!"- ใช้ backtick เปิด-ปิด string
- แทรกค่าตัวแปรด้วย `${ชื่อตัวแปร}`
- ผลลัพธ์เป็น `string` เหมือนใช้ quote ธรรมดา
ใส่ expression ใน ${} ก็ได้ ไม่ใช่แค่ชื่อตัวแปร
`${...}` ไม่ได้จำกัดแค่ชื่อตัวแปร — ใส่นิพจน์คำนวณ หรือแทรกหลายตัวแปรใน `${}` เดียวก็ได้
แทรก expression คำนวณและหลายตัวแปรJS
let price = 199;
let qty = 3;
// แทรกตัวแปร
console.log(`ราคา: ${price} บาท`); // "ราคา: 199 บาท"
// แทรก expression (คำนวณใน ${} ได้เลย)
console.log(`รวม: ${price * qty} บาท`); // "รวม: 597 บาท"
// แทรกหลายตัวแปรใน string เดียว
let orderId = "A-102";
console.log(`Order ${orderId}: ${price} x ${qty}`);
// "Order A-102: 199 x 3"เขียนข้อความหลายบรรทัดได้เลย ไม่ต้องใช้ \n
Template Literal รองรับการขึ้นบรรทัดใหม่ในโค้ดโดยตรง — ไม่ต้องใช้ `\n` หรือเชื่อม string หลายอัน
เปรียบเทียบ \n กับ multiline template literalJS
// วิธีเดิม — ต้องใส่ \n ด้วยตัวเอง
let old = "บรรทัดที่ 1\nบรรทัดที่ 2\nบรรทัดที่ 3";
// Template Literal — ขึ้นบรรทัดในโค้ดได้เลย
let modern = `บรรทัดที่ 1
บรรทัดที่ 2
บรรทัดที่ 3`;
// ใช้งานจริง: เขียนที่อยู่หลายบรรทัด
let customer = "Mali";
let address = `ส่งถึง: ${customer}
123 ถนนสุขุมวิท
กรุงเทพฯ 10110`;
console.log(address);
// ส่งถึง: Mali
// 123 ถนนสุขุมวิท
// กรุงเทพฯ 10110- ขึ้นบรรทัดใหม่ในโค้ดได้เลย — ไม่ต้องพึ่ง `\n`
- ใช้ร่วมกับ `${}` ในข้อความหลายบรรทัดได้
- มีประโยชน์มากกับข้อความยาว ๆ เช่น ที่อยู่, อีเมล, รายงาน
ข้อควรระวังเมื่อใช้ Template Literal
3 จุดที่พลาดบ่อย — รู้ไว้ก่อนจะช่วยประหยัดเวลาดีบัก:
- ใช้ `${}` ใน single/double quote ไม่ได้ — `${}` ทำงานเฉพาะใน backtick เท่านั้น
- ใน multiline string ตัวเว้นวรรค (indent) จะถูกเก็บไว้ด้วย — ระวังช่องว่างหน้าบรรทัดที่ไม่ตั้งใจ
- `typeof` ของ template literal ยังเป็น `"string"` — ไม่ใช่ชนิดใหม่
สังเกต indent ที่ถูกเก็บไว้JS
// indent หน้าบรรทัดถูกเก็บเป็นส่วนหนึ่งของ string
let html = `
<div>
<h1>Title</h1>
</div>
`;
console.log(html);
//
<div>
<h1>Title</h1>
</div>
// สังเกตว่ามีช่องว่างและ newline ต้น-ท้าย