สามเหตุผลหลักที่ฉันนึกถึง:
- การเข้าถึงขอบเขตผู้ปกครอง
- ความเป็นส่วนตัว
- การลดชื่อที่กำหนดในขอบเขตที่สูงกว่า
การเข้าถึงขอบเขตหลัก:คำจำกัดความฟังก์ชันอินไลน์อนุญาตให้โค้ดอินไลน์สามารถเข้าถึงตัวแปรที่กำหนดไว้ในขอบเขตหลัก สิ่งนี้มีประโยชน์มากสำหรับหลาย ๆ สิ่งและสามารถลดจำนวนหรือความซับซ้อนของรหัสได้หากทำอย่างถูกต้อง
หากคุณใส่รหัสในฟังก์ชั่นที่กำหนดไว้นอกขอบเขตนี้และจากนั้นเรียกรหัสคุณจะต้องผ่านสถานะพาเรนต์ใด ๆ ที่ต้องการเข้าถึงฟังก์ชัน
ความเป็นส่วนตัว:รหัสภายในคำจำกัดความแบบไม่ระบุชื่อแบบอินไลน์มีความเป็นส่วนตัวมากกว่าและไม่สามารถเรียกได้ด้วยรหัสอื่น
การลดชื่อที่กำหนดในขอบเขตที่สูงกว่า: สิ่งนี้สำคัญที่สุดเมื่อใช้งานในขอบเขตทั่วโลก แต่การประกาศแบบไม่ระบุชื่อแบบอินไลน์ไม่จำเป็นต้องกำหนดสัญลักษณ์ใหม่ในขอบเขตปัจจุบัน เนื่องจาก Javascript ไม่ต้องการการใช้เนมสเปซ แต่อย่างใดดังนั้นจึงควรหลีกเลี่ยงการกำหนดสัญลักษณ์ทั่วโลกมากกว่าที่ต้องการเพียงเล็กน้อย
บทบรรณาธิการ:ดูเหมือนว่าจะกลายเป็นสิ่งทางวัฒนธรรมใน Javascript ซึ่งการประกาศบางสิ่งบางอย่างแบบไม่ระบุชื่อจะถือว่า "ดีกว่า" กว่าการกำหนดฟังก์ชั่นและเรียกมันแม้ในขณะที่ไม่ได้ใช้ขอบเขตการปกครอง ฉันสงสัยว่านี่เป็นครั้งแรกเนื่องจากปัญหามลพิษเนมสเปซทั่วโลกใน Javascript จากนั้นอาจเป็นเพราะปัญหาความเป็นส่วนตัว แต่ตอนนี้มันกลายเป็นเรื่องของวัฒนธรรมไปแล้วและคุณสามารถเห็นมันแสดงออกมาในหน่วยงานสาธารณะจำนวนมาก (เช่นที่คุณพูดถึง)
ในภาษาอย่าง C ++ ส่วนใหญ่อาจถือว่าเป็นวิธีที่ไม่เหมาะสำหรับการใช้งานฟังก์ชั่นยักษ์ที่ขยายไปทั่วหน้า / หน้าจอหลายหน้าจอ แน่นอนว่า C ++ มี namespacing ในตัวไม่ได้ให้การเข้าถึงขอบเขตของผู้ปกครองและมีคุณสมบัติความเป็นส่วนตัวเพื่อให้สามารถสร้างแรงจูงใจทั้งหมดโดยการอ่าน / การบำรุงรักษาในขณะที่ Javascript ต้องใช้การแสดงออกของรหัสเพื่อให้บรรลุความเป็นส่วนตัวและการเข้าถึงขอบเขต ดังนั้น JS ดูเหมือนจะมีแรงจูงใจในทิศทางที่แตกต่างกันและมันก็กลายเป็นสิ่งที่มีวัฒนธรรมในภาษาแม้ว่าสิ่งที่กระตุ้นให้ทิศทางนั้นไม่จำเป็นในบางกรณี