ฟังก์ชันแม่แบบติดแท็ก
ประมวลผลส่วนต่าง ๆ ของแม่แบบด้วยฟังก์ชันแท็ก
ฟังก์ชันแม่แบบติดแท็ก เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐานการแทรกข้อความ
- ข้อความหลายบรรทัด
- ฟังก์ชันแม่แบบติดแท็ก
- กรณีใช้งานแม่แบบติดแท็กจริง