JS Native ไม่ได้ให้ฟังก์ชั่นฟอร์แมตที่สะดวกและดูวุ่นวายและยากที่จะอ่านโดยการประกบของตัวละครและไม่สะดวกมากที่จะใช้ โดยส่วนตัวฉันรู้สึกว่าไวยากรณ์ที่มีให้ใน C# นั้นมีประโยชน์มากกว่าเช่น:
string.format ("ยินดีต้อนรับสู่การเรียนรู้ '{0}', '{0}' นั้นยอดเยี่ยมคุณจะ {1} มัน!", "JavaScript", "love");วิธีการแทนที่ตามลำดับนี้ค่อนข้างชัดเจนและเมื่อเปลี่ยนเนื้อหาเดียวกันคุณสามารถบันทึกสถานการณ์ของการผ่านพารามิเตอร์ที่ซ้ำกันได้ ต่อไปนี้เป็นเวอร์ชันการใช้งานอย่างง่ายของ JS (โดยไม่ต้องทดสอบอย่างเข้มงวด):
(ฟังก์ชั่น (การส่งออก) {exports.format = function () {var args = array.prototype.slice.call (อาร์กิวเมนต์), sourcestr = args.shift (); ฟังก์ชั่น execreplace (ข้อความ, แทนที่, ดัชนี) {return text.replace args.reduce (execreplace, sourcestr);}}) (window.utils = window.utils || {}); console.log (utils.format ("ยินดีต้อนรับสู่การเรียนรู้ '{0}', '{0}' ยอดเยี่ยมคุณจะ {1}!กุญแจสำคัญคือประโยคนี้:
Args.Reduce (Execreflace, Sourcestr);
ที่นี่ใช้ฟังก์ชั่นลดของอาเรย์ การลดและลดน้ำหนักเป็นฟังก์ชั่นที่เพิ่มขึ้นใหม่ใน ES5 พารามิเตอร์ของฟังก์ชั่นนี้ลดลง (การเรียกกลับ, ค่าเริ่มต้น) การโทรกลับได้รับ 4 พารามิเตอร์:
ก่อนหน้านี้:
เมื่อข้ามรายการแรกของฟังก์ชั่นการโทรกลับหากระบุค่าเริ่มต้นค่าเริ่มต้นจะใช้โดยตรงจะถูกใช้โดยตรงหากไม่มีองค์ประกอบแรกของอาร์เรย์ที่ระบุองค์ประกอบแรกของอาร์เรย์จะถูกใช้
ค่าของการเดินทางครั้งที่สองและครั้งต่อไปเป็นผลมาจากการเดินทางก่อนหน้านี้
ผลลัพธ์ที่ส่งคืนโดยการเดินทางครั้งสุดท้ายจะถูกใช้เป็นค่าส่งคืนของฟังก์ชันลด
CurrentValue: รายการปัจจุบันที่สำรวจ
ดัชนี: ดัชนีของรายการปัจจุบันในอาร์เรย์
อาร์เรย์: อาร์เรย์ดั้งเดิม
ในการดำเนินการแต่ละครั้งใน Execreplace ผลลัพธ์หลังจากการเปลี่ยนก่อนหน้านี้ถูกใช้เป็นสตริงการเปลี่ยนต้นฉบับดัชนีของรายการปัจจุบันจะใช้เป็นเนื้อหาที่จะถูกแทนที่และวนซ้ำเพื่อให้เนื้อหาเปลี่ยนเสร็จสมบูรณ์ในที่สุด
หมายเหตุ: การลดน้ำหนักนั้นเหมือนกับฟังก์ชั่นลดยกเว้นว่าคำสั่งการสำรวจนั้นมาจากขวาไปซ้าย