Với đoạn mã sau, những gì tôi nên mong đợi để nhìn thấy trong cảnh báo?Phạm vi chức năng ẩn danh thông qua như là chức năng lập luận
var a = 100;
function afunc(infunc){
a = 10;
infunc.call();
}
afunc(function(){alert(a)});
Suy nghĩ ban đầu của tôi là trình duyệt của tôi phải cảnh báo 100 vì biến a = 100 nằm trong phạm vi cho chức năng ẩn danh được chuyển làm đối số. Nhưng điều này giả định rằng hàm ẩn danh thực sự được định nghĩa trong ngữ cảnh chung. Rõ ràng đó không phải là trường hợp như trình duyệt cảnh báo 10. Vậy tại sao một = 10 trước một = 100 trong chuỗi phạm vi?
Cảm ơn!
Facepalm! Bây giờ tôi cảm thấy ngớ ngẩn. –
có, đó là lý do chính xác –