Tôi muốn xem các ví dụ của việc sử dụng phạm vi chức năng cấp đó sẽ là khó hoặc không thể thực hiện sử dụng phạm vi khối cấp.
Có lẽ nó sẽ âm thanh rõ ràng, nhưng bạn có thể thực hiện đệ quy trong phạm vi chức năng cấp, có thể là thường hữu ích, ví dụ:
var x = 5; // global scope
(function (y) { // y - locally scoped variable on each execution
y && arguments.callee(--y); // recursion!
console.log(y);
})(x);
Đó là chủ yếu không thể thực hiện với phạm vi khối cấp . Trong ví dụ trên, chức năng ban đầu sẽ được thực thi thông qua giá trị của biến số x
bên ngoài, trước khi hàm được gọi một bối cảnh thực thi mới được thiết lập, khởi tạo một phạm vi từ vựng mới, trong đó tham số chính thức y
ràng buộc với nó.
Sau đó, biểu thức chức năng được thực hiện lại -if y
không phải là 0
- khởi tạo trên mỗi thực thi một phạm vi từ vựng hoàn toàn mới.
Ý của bạn là nếu được triển khai với phạm vi cấp ** khối **. –
@Peter: Crikey, bây giờ có một phiếu của các ngón tay ... Cảm ơn! –