Tôi nhận thấy rằng có một vài cú pháp hơi khác nhau khi tải các tệp js một cách không đồng bộ và tôi tự hỏi liệu có sự khác biệt nào giữa hai tệp hay không. Tôi đoán họ làm việc như nhau, nhưng chỉ muốn chắc chắn rằng một phương pháp không tốt hơn phương pháp khác vì một lý do nào đó. :)Cú pháp tải tệp không đồng bộ .js
Phương pháp Một
(function() {
var d=document,
h=d.getElementsByTagName('head')[0],
s=d.createElement('script');
s.type='text/javascript';
s.src='/js/myfile.js';
h.appendChild(s);
})(); /* note ending parenthesis and curly brace */
Phương pháp thứ hai (Saw này trong mã của Facebook)
(function() {
var d=document,
h=d.getElementsByTagName('head')[0],
s=d.createElement('script');
s.type='text/javascript';
s.async=true;
s.src='/js/myfile.js';
h.appendChild(s);
}()); /* note ending parenthesis and curly brace */
mát, cảm ơn. Chẳng phải s.asynch = true vô nghĩa trong trường hợp này, vì kịch bản được tiêm vào thẻ head? Và theo cú pháp trên dấu ngoặc đơn: (function() {...})(); vs: (function() {...}()); - những thứ đó có giống nhau không? – taber
@taber: Có cú pháp ngoặc đơn đạt được cùng một mục tiêu. tức là: hàm được đánh giá dưới dạng biểu thức hàm thay vì câu lệnh hàm. Xem: http://stackoverflow.com/questions/440739/what-do-parentheses-surrounding-a-javascript-objectfunctionclass-declaration/442408#442408 và http://stackoverflow.com/questions/1634268/explain-javascripts- encapsulated-anonymous-function-syntax/1634321 # 1634321 (đặc biệt là bình luận cuối cùng). –
@taber: Tôi không nghĩ rằng thực tế là nó được chèn vào trong '
' tạo ra bất kỳ sự khác biệt nào. (Nhưng tôi không có tài liệu tham khảo hoặc kiểm tra để trả lại điều này). –