Ba lý do chính tôi có thể nghĩ đến:
- Truy cập phạm vi phụ huynh
- Riêng tư
- Giảm tên được xác định trong phạm vi cao hơn
Quyền truy cập phạm vi cha mẹ: Định nghĩa hàm nội tuyến cho phép mã nội tuyến có quyền truy cập vào các biến được xác định trong phạm vi cha. Điều này có thể rất hữu ích cho nhiều thứ và có thể làm giảm số lượng hoặc độ phức tạp của mã nếu được thực hiện đúng cách.
Nếu bạn đặt mã trong một hàm được xác định bên ngoài phạm vi này và sau đó gọi mã, thì bạn sẽ phải chuyển bất kỳ trạng thái cha mẹ nào mà nó muốn truy cập vào hàm.
Quyền riêng tư: Mã bên trong một định nghĩa ẩn danh nội tuyến là riêng tư hơn và không thể được gọi bằng mã khác.
Giảm tên được xác định trong phạm vi cao hơn: Điều này quan trọng nhất khi hoạt động trong phạm vi toàn cầu, nhưng một tuyên bố ẩn danh nội tuyến giúp không phải xác định một biểu tượng mới trong phạm vi hiện tại. Vì Javascript vốn không yêu cầu sử dụng không gian tên, nên tránh việc xác định bất kỳ ký hiệu toàn cầu nào nhiều hơn yêu cầu tối thiểu.
Biên tập: Nó dường như đã trở thành một thứ văn hóa trong Javascript khi khai báo một thứ ẩn danh nội tuyến nào đó được coi là "tốt hơn" so với việc xác định hàm và gọi nó ngay cả khi không sử dụng quyền truy cập phạm vi cha. Tôi nghi ngờ điều này ban đầu là do vấn đề ô nhiễm không gian tên toàn cầu trong Javascript, sau đó có lẽ là do vấn đề riêng tư. Nhưng bây giờ nó đã biến thành một phần của một thứ văn hóa và bạn có thể thấy nó được thể hiện trong rất nhiều bộ luật công khai (giống như những gì bạn đề cập).
Trong các ngôn ngữ như C ++, hầu hết có lẽ sẽ coi đó là một cách thực hành không lý tưởng để có một chức năng khổng lồ trải dài trên nhiều trang / màn hình. Tất nhiên, C ++ có không gian tên được tích hợp sẵn, không cung cấp quyền truy cập phạm vi cha mẹ và có các tính năng bảo mật để nó có thể được thúc đẩy hoàn toàn bởi khả năng đọc / bảo trì trong khi Javascript phải sử dụng biểu thức mã để đạt được quyền riêng tư và quyền truy cập phạm vi cha mẹ. Vì vậy, JS dường như đã được thúc đẩy theo một hướng khác và nó trở thành một thứ văn hóa trong ngôn ngữ, ngay cả khi những thứ thúc đẩy hướng đó không cần thiết trong một trường hợp cụ thể.