0Pricing
JavaScript Academy · บทเรียน

ฟังก์ชันแม่แบบติดแท็ก

ประมวลผลส่วนต่าง ๆ ของแม่แบบด้วยฟังก์ชันแท็ก

ฟังก์ชันแม่แบบติดแท็ก เป็นบทเรียน JavaScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน JavaScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

ฟังก์ชันกำกับคืออะไร

แม่แบบที่มีฟังก์ชันกำกับคือการเรียกฟังก์ชันที่วางชื่อฟังก์ชันไว้ตรงหน้าลิเทอรัลแม่แบบ ฟังก์ชันจะได้รับส่วนต่าง ๆ ของแม่แบบที่แยกวิเคราะห์แล้ว และสามารถแปลงส่วนเหล่านั้นได้

function tag(strings, value) {
  return strings[0] + value.toUpperCase() + strings[1]
}
console.log(tag(["Hi ", "!"], "bob"))

อาร์เรย์ส่วนข้อความ

อาร์กิวเมนต์แรกที่ฟังก์ชันกำกับได้รับคืออาร์เรย์ของส่วนข้อความคงที่ ซึ่งเป็นกลุ่มข้อความที่อยู่ระหว่างและล้อมรอบช่องแทนค่า

function tag(strings) {
  return strings.join("|")
}
console.log(tag(["a", "b", "c"]))

ค่า

หลังจากอาร์เรย์ส่วนข้อความแล้ว ฟังก์ชันกำกับจะได้รับค่าแต่ละค่าที่แทรกไว้เป็นอาร์กิวเมนต์แยกกัน การใช้พารามิเตอร์ส่วนที่เหลือจะรวบรวมค่าเหล่านั้นไว้ในอาร์เรย์

function tag(strings, ...values) {
  return values.join(",")
}
console.log(tag(["", " and ", ""], "x", "y"))

ประกอบสตริงกลับขึ้นมา

ฟังก์ชันกำกับทั่วไปจะวนผ่านอาร์เรย์ส่วนข้อความและแทรกค่าแต่ละค่าระหว่างส่วนต่าง ๆ เพื่อสร้างสตริงสุดท้ายขึ้นใหม่ด้วยการแปลงตามที่คุณต้องการ

function tag(strings, ...values) {
  let out = ""
  strings.forEach(function (s, i) {
    out += s + (values[i] !== undefined ? values[i] : "")
  })
  return out
}
console.log(tag(["A", "B", "C"], 1, 2))

กฎความยาวของอาร์เรย์ส่วนข้อความ

อาร์เรย์ส่วนข้อความจะมีสมาชิกมากกว่าอาร์เรย์ค่าหนึ่งสมาชิกเสมอ เนื่องจากมีข้อความก่อนช่องแทนค่าแรกและหลังช่องแทนค่าสุดท้าย แม้ว่าบางส่วนจะว่างก็ตาม

function tag(strings, ...values) {
  return "strings=" + strings.length + " values=" + values.length
}
console.log(tag(["", "", ""], 1, 2))

แปลงค่า

เนื่องจากฟังก์ชันกำกับควบคุมวิธีแทรกค่า คุณจึงสามารถจัดรูปแบบค่าเหล่านั้นได้ ในที่นี้ค่าตัวเลขทุกค่าจะถูกคูณสองก่อนแทรก

function dbl(strings, ...values) {
  let out = ""
  strings.forEach(function (s, i) {
    out += s + (values[i] !== undefined ? values[i] * 2 : "")
  })
  return out
}
console.log(dbl(["", " ", ""], 3, 4))

คืนค่าที่ไม่ใช่สตริง

ฟังก์ชันกำกับไม่จำเป็นต้องคืนค่าเป็นสตริงเสมอไป แต่สามารถคืนค่าใดก็ได้ เช่น ออบเจ็กต์หรืออาร์เรย์ที่สร้างจากส่วนต่าง ๆ ของแม่แบบ

function parts(strings, ...values) {
  return { strings: strings, values: values }
}
const r = parts(["a", "b"], 9)
console.log(r.values[0])

คุณสมบัติ raw

อาร์เรย์ส่วนข้อความยังมีคุณสมบัติ raw ซึ่งเก็บข้อความโดยไม่ประมวลผลลำดับหลบ นี่คือวิธีการทำงานของ String.raw

console.log(String.raw({ raw: ["a\\n", "b"] }, "X"))

การเปลี่ยนค่าแทรกเป็นตัวพิมพ์ใหญ่

แท็กสาธิตทั่วไปจะเปลี่ยนค่าที่แทรกทั้งหมดเป็นตัวพิมพ์ใหญ่ โดยปล่อยให้ข้อความคงที่ไม่เปลี่ยนแปลง

function loud(strings, ...values) {
  let out = ""
  strings.forEach(function (s, i) {
    out += s + (values[i] !== undefined ? String(values[i]).toUpperCase() : "")
  })
  return out
}
console.log(loud(["name is ", "."], "alice"))

เหตุผลที่ใช้แท็ก

ฟังก์ชันแท็กช่วยให้สร้างรูปแบบการทำงานที่ทรงพลังได้ เช่น การหลีกอักขระจากข้อมูลนำเข้าที่ไม่น่าเชื่อถือ การปรับให้เข้ากับภาษาต่าง ๆ การสร้างคำสั่งฐานข้อมูลหรือแบบสอบถาม และการจัดรูปแบบแบบกำหนดเอง โดยทั้งหมดขับเคลื่อนด้วยโครงสร้างแม่แบบ

function highlight(strings, ...values) {
  let out = ""
  strings.forEach(function (s, i) {
    out += s + (values[i] !== undefined ? "[" + values[i] + "]" : "")
  })
  return out
}
console.log(highlight(["score: ", " pts"], 42))

การละเว้นค่า

แท็กสามารถเลือกละเว้นค่าที่แทรกทั้งหมด และสร้างผลลัพธ์โดยอาศัยเฉพาะส่วนคงที่ได้ ซึ่งมีประโยชน์สำหรับการวิเคราะห์หรือการบันทึกข้อมูล

function onlyStatic(strings) {
  return strings.filter(function (s) { return s.length > 0 }).join(" ")
}
console.log(onlyStatic(["Hello ", " world ", ""]))

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความรู้เกี่ยวกับฟังก์ชันแท็กของคุณ

ทบทวน

ทบทวน: แม่แบบที่มีแท็กจะเรียกใช้ฟังก์ชันพร้อมส่วนต่าง ๆ ของแม่แบบที่แยกวิเคราะห์แล้ว

  • อาร์กิวเมนต์แรกคืออาร์เรย์สตริง
  • อาร์กิวเมนต์ที่เหลือคือค่าที่แทรก
  • อาร์เรย์สตริงมีสมาชิกมากกว่าค่าหนึ่งรายการ
  • คุณสมบัติ raw เก็บข้อความที่ยังไม่ได้ประมวลผล
function tag(s, ...v) { return s[0] + v[0] }
console.log(tag(["go "], "fast"))

คำถามที่พบบ่อย

บทเรียน “ฟังก์ชันแม่แบบติดแท็ก” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ฟังก์ชันแม่แบบติดแท็ก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส JavaScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ฟังก์ชันแม่แบบติดแท็ก”

ประมวลผลส่วนต่าง ๆ ของแม่แบบด้วยฟังก์ชันแท็ก คุณปฏิบัติ JavaScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน JavaScript Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน JavaScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “ฟังก์ชันแม่แบบติดแท็ก” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน JavaScript Academy นี้ได้ไหม

ได้ บทเรียน JavaScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐานการแทรกข้อความ
  2. ข้อความหลายบรรทัด
  3. ฟังก์ชันแม่แบบติดแท็ก
  4. กรณีใช้งานแม่แบบติดแท็กจริง
← กลับไปที่ JavaScript Academy