Mã này luôn luôn làm việc, thậm chí trong các trình duyệt khác nhau:Tại sao tôi có thể sử dụng hàm trước khi được xác định trong JavaScript?
function fooCheck() {
alert(internalFoo()); // We are using internalFoo() here...
return internalFoo(); // And here, even though it has not been defined...
function internalFoo() { return true; } //...until here!
}
fooCheck();
tôi không thể tìm thấy một tài liệu tham khảo duy nhất để lý do tại sao nó phải làm việc, mặc dù. Lần đầu tiên tôi thấy điều này trong ghi chú trình bày của John Resig, nhưng nó chỉ được đề cập đến. Không có lời giải thích nào hay ở đâu cho vấn đề đó.
Ai đó có thể làm sáng tỏ tôi không?
Trong các phiên bản mới hơn của firefox, điều này không có tác dụng nếu các mã trong một try/catch. Xem fiddle này: http://jsfiddle.net/qzzc1evt/ –