var a;
if (true) {
a = 5;
function a() {}
a = 0;
console.log(a)
}
console.log(a)
Tôi thấy mã ở trên, một hàm được khai báo trong {}. Tôi nghĩ rằng nó sẽ in 0 0, nhưng nó in 0 5
Điều này có trả lời câu hỏi của bạn không? Các ngữ nghĩa chính xác của các hàm cấp khối trong ES6 là gì?
—
Jonas Wilms
Trong chế độ nghiêm ngặt, nó đăng nhập
—
SurePerformance
0 undefined.
@certainPerformance tốt, điều đó có thể giải thích được, nhưng tôi không giải thích được rằng
—
Jonas Wilms
a = 5rời khỏi khối. Theo bergi trong bản dupe, function asẽ được nâng lên.
Có vẻ như nếu biến khối phạm vi cục bộ được sao chép sang khối bên ngoài khi đạt đến khai báo hàm.
—
Jonas Wilms