คำถามติดแท็ก template-literals

8
ตัดบรรทัดลิเทอรัลเทมเพลตแบบยาวเป็นหลายบรรทัดโดยไม่ต้องสร้างบรรทัดใหม่ในสตริง
ในตัวอักษรเทมเพลต es6 เราจะรวมตัวอักษรแบบยาวเป็นหลายบรรทัดโดยไม่ต้องสร้างบรรทัดใหม่ในสตริงได้อย่างไร ตัวอย่างเช่นหากคุณทำสิ่งนี้: const text = `a very long string that just continues and continues and continues` จากนั้นจะสร้างสัญลักษณ์บรรทัดใหม่ให้กับสตริงเนื่องจากตีความให้มีบรรทัดใหม่ เราจะรวมลิเทอรัลแบบยาวเป็นหลายบรรทัดโดยไม่ต้องสร้างบรรทัดใหม่ได้อย่างไร

18
สามารถแทนที่ตัวอักษรเทมเพลต ES6 ที่รันไทม์ (หรือใช้ซ้ำ) ได้หรือไม่
tl; dr: เป็นไปได้ไหมที่จะสร้างเทมเพลตที่ใช้ซ้ำได้? ฉันพยายามใช้ตัวอักษรเทมเพลต แต่ฉันคิดว่าฉันไม่เข้าใจและตอนนี้ฉันเริ่มหงุดหงิด ฉันหมายถึงฉันคิดว่าฉันเข้าใจแล้ว แต่ "มัน" ไม่ควรเป็นวิธีการทำงานหรือวิธีที่ควรได้รับ มันควรจะได้รับที่แตกต่างกัน ตัวอย่างทั้งหมดที่ฉันเห็น (แม้แต่เทมเพลตที่ติดแท็ก) กำหนดให้ "การแทนที่" ต้องทำในเวลาประกาศไม่ใช่เวลาทำงานซึ่งดูเหมือนว่าไม่มีประโยชน์สำหรับฉันสำหรับเทมเพลต บางทีฉันอาจจะบ้า แต่ "เทมเพลต" สำหรับฉันคือเอกสารที่มีโทเค็นซึ่งถูกแทนที่เมื่อคุณใช้ไม่ใช่เมื่อคุณสร้างมันมิฉะนั้นจะเป็นเพียงเอกสาร (เช่นสตริง) เทมเพลตจะถูกเก็บไว้กับโทเค็นเนื่องจากโทเค็นและโทเค็นเหล่านั้นจะได้รับการประเมินเมื่อคุณ ... ประเมินมัน ทุกคนยกตัวอย่างที่น่ากลัวคล้ายกับ: var a = 'asd'; return `Worthless ${a}!` นั่นเป็นเรื่องดี แต่ถ้าผมรู้อยู่แล้วว่าaผมจะเพียงหรือreturn 'Worthless asd' return 'Worthless '+aประเด็นคืออะไร? อย่างจริงจัง. โอเคประเด็นคือความเกียจคร้าน ข้อดีน้อยลงอ่านได้ง่ายขึ้น ยิ่งใหญ่ แต่นั่นไม่ใช่แม่แบบ! ไม่ใช่ IMHO และ MHO คือทุกสิ่งที่สำคัญ! ปัญหา IMHO …

2
Backticks เรียกใช้ฟังก์ชัน
ฉันไม่แน่ใจว่าจะอธิบายเรื่องนี้อย่างไร แต่เมื่อฉันวิ่ง console.log`1` ใน Google Chrome ฉันได้รับผลลัพธ์เช่น console.log`1` VM12380:2 ["1", raw: Array[1]] ทำไม backtick เรียกฟังก์ชั่นบันทึกและมันเป็นเหตุผลที่ทำให้ดัชนีของraw: Array[1]? คำถามถูกนำขึ้นมาในห้อง JS โดย Catgocat แต่ไม่มีคำตอบใดที่สมเหตุสมผลนอกจากบางสิ่งเกี่ยวกับการสร้างเทมเพลตสตริงที่ไม่เหมาะสมจริงๆว่าทำไมสิ่งนี้จึงเกิดขึ้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.