โปรดให้อภัยความจำของฉันหากฉันมีสิ่งที่ไม่ถูกต้อง ... จาวาสคริปต์ไม่ใช่ภาษาการใช้งานที่ฉันต้องการ
มีสาเหตุหลายประการที่ทำให้ใครอยากจะไม่มีฟังก์ชั่นหาเรื่องห่อการเรียกฟังก์ชั่นอื่น ในขณะที่เรียกง่ายๆที่จะเป็นสิ่งที่คุณสามารถจินตนาการเพียงแทนที่จะเรียกโดยตรงแทนwindow.alert("Hello");
sayHello()
แต่ถ้ามีมากกว่านั้นล่ะ คุณมีสถานที่มากมายที่คุณต้องการโทรหาsayHello()
และเขียนwindow.alert("Hello");
แทน window.alert("Hello, it is now " + new Date())
ตอนนี้คุณต้องการที่จะทำ หากคุณห่อทุกสายเหล่านั้นในขณะที่sayHello()
คุณเปลี่ยนมันที่เดียว ถ้าคุณไม่ทำคุณเปลี่ยนมันในหลาย ๆ ที่ สัมผัสเกี่ยวกับเรื่องนี้จะไม่ทำซ้ำตัวเอง คุณทำเพราะคุณไม่ต้องการที่จะทำมันอีกหลายสิบครั้งในอนาคต
ฉันทำงานกับไลบรารี่ i18n / l10nในอดีตที่ใช้ฟังก์ชั่นในการแปลข้อความฝั่งไคลเอ็นต์ พิจารณาsayHello()
ฟังก์ชั่น คุณสามารถพิมพ์ออกมาhola
เมื่อผู้ใช้แปลเป็นภาษาสเปน สิ่งนี้อาจมีลักษณะเช่น:
function sayHello() {
var language = window.navigator.userLanguage || window.navigator.language;
if(language === 'es') { window.alert('Hola'); }
else { window.alert("Hello"); }
}
แม้ว่านี่จะไม่ใช่วิธีการทำงานของห้องสมุด มีชุดไฟล์ที่ดูเหมือน:
# English file
greeting = hello
# Spanish file
greeting = hola
จากนั้นไลบรารีจะตรวจจับการตั้งค่าภาษาของเบราว์เซอร์จากนั้นสร้างฟังก์ชันแบบไดนามิกด้วยการแปลที่เหมาะสมเป็นค่าส่งคืนสำหรับการเรียกใช้ฟังก์ชัน no-arguemnt ตามไฟล์การแปลที่เหมาะสม
ฉันยังไม่พอที่จะบอกว่าดีหรือไม่ดีจาวาสคริปต์ coder ... แค่ว่ามันและสามารถมองได้ว่าเป็นแนวทางที่เป็นไปได้
ประเด็นก็คือการตัดการเรียกไปยังฟังก์ชันอื่นในฟังก์ชั่นของตัวเองนั้นมักมีประโยชน์และช่วยในการทำให้เป็นโมดูลของแอพพลิเคชั่นและอาจทำให้อ่านรหัสได้ง่ายขึ้น
ทั้งหมดที่เหลือคุณกำลังทำงานจากการสอน มีความจำเป็นต้องแนะนำสิ่งต่าง ๆ ให้ง่ายที่สุดในตอนเริ่มต้น การแนะนำการเรียกใช้ฟังก์ชันสไตล์ varargs ตั้งแต่เริ่มต้นอาจส่งผลให้เกิดรหัสที่สับสนมากสำหรับผู้ที่ไม่คุ้นเคยกับการเขียนโค้ดโดยทั่วไป มันง่ายกว่ามากที่จะไปจากการไม่มีข้อโต้แย้งข้อโต้แย้งไปจนถึงรูปแบบ varargs - ด้วยสิ่งปลูกสร้างแต่ละตัวอย่างและความเข้าใจก่อนหน้านี้