Tôi có một chút hiểu biết về phạm vi JavaScript - rằng ngôn ngữ có phạm vi cấp chức năng và các khai báo biến và chức năng được đưa lên đầu phạm vi chứa của chúng. Tuy nhiên, tôi không thể tìm ra lý do tại sao hai mảnh sau mã đăng nhập giá trị khác nhau:Lẫn lộn với phạm vi JavaScript
này ghi lại giá trị từ 1 tới giao diện điều khiển:
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
console.log(a);
Và một cách bí ẩn, điều này ghi 10:
var a = 1;
function b() {
a = 10;
return;
}
b();
console.log(a);
Vì vậy, những gì đang xảy ra bên dưới mui xe?
['sử dụng nghiêm ngặt'] (http://stackoverflow.com/questions/1335851/) sẽ không cho phép khai báo một hàm như trong ví dụ đầu tiên, do đó, đó có thể là một ý tưởng rất tồi để bắt đầu. – transistor09
Thú vị nhưng nó giống như một vấn đề thiết kế. –