Câu trả lời đơn giản:
Trong một kịch bản đơn giản [các thẻ là một phần của văn bản HTML gốc], trình duyệt chắc chắn thực hiện chúng từng người khác.
Thảo luận chi tiết với các cảnh báo khác nhau
JavaScript không nhất thiết là một luồng đơn [nó phụ thuộc vào việc triển khai công cụ JavaScript của bạn, ví dụ: xem nhân viên web].
Nhưng, các thẻ cá nhân được thực thi tuần tự.
Để tham khảo, vui lòng xem JavaScript: The Definitive Guide
. Trích dẫn chương "12.3. Thực hiện các chương trình JavaScript":
Các câu lệnh JavaScript xuất hiện giữa và các thẻ được thực thi theo thứ tự xuất hiện; Khi có nhiều tập lệnh xuất hiện trong một tệp, các tập lệnh được thực thi theo thứ tự chúng xuất hiện. Nếu một tập lệnh gọi document.write [], bất kỳ văn bản nào được chuyển đến phương thức đó được chèn vào tài liệu ngay sau khi thẻ đóng và được trình phân tích cú pháp HTML phân tích cú pháp HTML khi tập lệnh hoàn thành chạy. Các quy tắc tương tự áp dụng cho các tập lệnh được bao gồm từ các tệp riêng biệt với thuộc tính SRC.
Xin lưu ý rằng những điều trên chỉ đúng với việc thực thi mã "thẳng lên" trong các thẻ. Tuy nhiên, thứ tự có thể bị ảnh hưởng bởi:
setTimeout[]
cuộc gọi [duh]Thuộc tính trì hoãn
Đính kèm động của các thẻ
- Xem phần cuối cùng của câu trả lời này.
Như một cảnh báo, xin lưu ý rằng mã JavaScript được tải bên ngoài thông qua vẫn sẽ được thực thi tuần tự, nhưng, hoàn toàn có khả năng trình duyệt sẽ tải xuống mã song song - phụ thuộc vào việc triển khai trình duyệt [nhưng vẫn lên lịch thực hiện các đoạn mã đã tải xuống trong đúng thứ tự].caveat, please note that JavaScript code loaded externally via
would still be executed sequentially, BUT, it is quite possible that the browser would DOWNLOAD the code in parallel - depends on browser implementation [but still schedule the execution of downloaded code snippets in correct order].
Sự cảnh báo này rất quan trọng trong trường hợp bạn muốn có một số hack kỳ lạ trong khi URL cho nguồn JavaScript thực sự là một tập lệnh CGI thực hiện một cái gì đó và bạn cố gắng phụ thuộc vào đúng thứ tự tải xuống cho logic trong tập lệnh.
Một lần nữa, nó sẽ không có liên quan đến thứ tự thực hiện của Trình duyệt JS Engine của các phần kịch bản đó.
Tuy nhiên, một cảnh báo quan trọng hơn nhiều là nếu bạn thực sự đính kèm các thẻ với các nguồn bên ngoài một cách linh hoạt [ví dụ: thông qua cuộc gọi
appendChild[]
], theo bài đăng này, cũng như blog MSDN mà bài đăng dựa trên Không đảm bảo thứ tự thực hiện! Nó sẽ phụ thuộc vào mã của thẻ nào đã hoàn thành tải xuống đầu tiên!important caveat is that if you actually attach the tags with external sources dynamically [e.g. via
appendChild[]
call], according to
this SO post, as well as the MSDN blog the post was based on, non-IE browsers do NOT guarantee the order of execution! It will depend on which tag's code finished downloading first!
Thẻ tập lệnh HTML được sử dụng để nhúng dữ liệu hoặc ngôn ngữ tập lệnh phía máy khách có thể thực thi trong trang HTML. Hầu hết, mã API dựa trên JavaScript hoặc JavaScript bên trong thẻ
DOCTYPE html>
alert['Executing JavaScript 1']
JavaScript Tutorials
alert['Executing JavaScript 2']
This page contains multiple script tags.
alert['Executing JavaScript 3']
0.Sau đây là một ví dụ về trang HTML chứa mã JavaScript trong thẻ .
DOCTYPE html>
JavaScript Tutorials
//write JavaScript code here..
alert['Hello, how are you?']
Trong ví dụ trên, thẻ
DOCTYPE html>
alert['Executing JavaScript 1']
JavaScript Tutorials
alert['Executing JavaScript 2']
This page contains multiple script tags.
alert['Executing JavaScript 3']
0 chứa JavaScript DOCTYPE html>
alert['Executing JavaScript 1']
JavaScript Tutorials
alert['Executing JavaScript 2']
This page contains multiple script tags.
alert['Executing JavaScript 3']
3 hiển thị hộp thông báo.HTML V4 yêu cầu thuộc tính
DOCTYPE html>
alert['Executing JavaScript 1']
JavaScript Tutorials
alert['Executing JavaScript 2']
This page contains multiple script tags.
alert['Executing JavaScript 3']
4 để xác định ngôn ngữ của mã tập lệnh được nhúng trong thẻ tập lệnh. Điều này được chỉ định là loại MIME, ví dụ: 'Text/JavaScript', 'Text/Ecmascript', 'Text/VBScript', v.v.Trang HTML V5 không yêu cầu thuộc tính
DOCTYPE html>
alert['Executing JavaScript 1']
JavaScript Tutorials
alert['Executing JavaScript 2']
This page contains multiple script tags.
alert['Executing JavaScript 3']
4 vì ngôn ngữ tập lệnh mặc định là 'Text/javaScript' trong thẻ
. Một trang HTML có thể chứa nhiều thẻ trong thẻ
DOCTYPE html>
alert['Executing JavaScript 1']
JavaScript Tutorials
alert['Executing JavaScript 2']
This page contains multiple script tags.
alert['Executing JavaScript 3']
8 hoặc DOCTYPE html>
alert['Executing JavaScript 1']
JavaScript Tutorials
alert['Executing JavaScript 2']
This page contains multiple script tags.
alert['Executing JavaScript 3']
9. Trình duyệt thực thi tất cả các thẻ tập lệnh, bắt đầu từ thẻ tập lệnh đầu tiên từ đầu.Các tập lệnh không có các thuộc tính
DOCTYPE html>
JavaScript Tutorials
0, DOCTYPE html>
JavaScript Tutorials
1 hoặc DOCTYPE html>
JavaScript Tutorials
2, cũng như các tập lệnh nội tuyến, được tìm nạp và thực thi ngay lập tức, trước khi trình duyệt tiếp tục phân tích trang. Xem xét trang sau với nhiều thẻ tập lệnh.DOCTYPE html>
alert['Executing JavaScript 1']
JavaScript Tutorials
alert['Executing JavaScript 2']
This page contains multiple script tags.
alert['Executing JavaScript 3']
Ở trên, thẻ đầu tiên có chứa
DOCTYPE html>
JavaScript Tutorials
4 sẽ được thực thi trước, sau đó DOCTYPE html>
JavaScript Tutorials
5 sẽ được thực thi và sau đó DOCTYPE html>
JavaScript Tutorials
6 sẽ được thực thi.Trình duyệt tải tất cả các tập lệnh có trong thẻ
DOCTYPE html>
alert['Executing JavaScript 1']
JavaScript Tutorials
alert['Executing JavaScript 2']
This page contains multiple script tags.
alert['Executing JavaScript 3']
8 trước khi tải và hiển thị các phần tử thẻ DOCTYPE html>
alert['Executing JavaScript 1']
JavaScript Tutorials
alert['Executing JavaScript 2']
This page contains multiple script tags.
alert['Executing JavaScript 3']
9. Vì vậy, luôn bao gồm các tệp/mã JavaScript trong DOCTYPE html>
alert['Executing JavaScript 1']
JavaScript Tutorials
alert['Executing JavaScript 2']
This page contains multiple script tags.
alert['Executing JavaScript 3']
8 sẽ được sử dụng trong khi hiển thị giao diện người dùng. Tất cả các tập lệnh khác nên được đặt trước thẻ
0 kết thúc. Bằng cách này, bạn có thể tăng tốc độ tải trang.Tham khảo tệp tập lệnh bên ngoài
Thẻ cũng có thể được sử dụng để bao gồm một tệp tập lệnh bên ngoài vào trang web HTML bằng cách sử dụng thuộc tính
2.
Nếu bạn không muốn viết mã JavaScript nội tuyến trong thẻ
DOCTYPE html>
alert['Executing JavaScript 1']
JavaScript Tutorials
alert['Executing JavaScript 2']
This page contains multiple script tags.
alert['Executing JavaScript 3']
0, thì bạn cũng có thể viết mã JavaScript trong một tệp riêng với tiện ích mở rộng
4 và đưa nó vào trang web bằng cách sử dụng thẻ và tham chiếu tệp qua thuộc tính SRC.DOCTYPE html>
JavaScript Tutorials
Ở trên, 5 trỏ vào tệp JavaScript bên ngoài bằng thuộc tính
6 trong đó giá trị của thuộc tính
2 là đường dẫn hoặc URL mà tệp cần được tải trong trình duyệt. Lưu ý rằng bạn có thể tải các tệp từ miền của mình cũng như các tên miền khác.
Thuộc tính toàn cầu
có thể chứa các thuộc tính toàn cầu sau:
không đồng bộ | 9 thực thi tập lệnh không đồng bộ cùng với phần còn lại của trang. |
Crossorign | JavaScript: The Definitive Guide 0 cho phép ghi nhật ký lỗi cho các trang web sử dụng miền riêng cho phương tiện tĩnh. Giá trị JavaScript: The Definitive Guide 1 Không gửi thông tin đăng nhập, trong khi JavaScript: The Definitive Guide 2 gửi thông tin đăng nhập. |
hoãn lại | JavaScript: The Definitive Guide 3 thực thi tập lệnh sau khi tài liệu được phân tích cú pháp và trước khi bắn sự kiện DomContentLoaded. |
SRC | JavaScript: The Definitive Guide 4 Chỉ định URI/đường dẫn của tệp tập lệnh bên ngoài; |
loại hình | JavaScript: The Definitive Guide 5 Chỉ định loại tập lệnh chứa, ví dụ: Text \ JavaScript, Text \ Html, Text \ Plain, application \ json, application \ pdf, v.v. |
Giới thiệu | JavaScript: The Definitive Guide 6 Chỉ định thông tin giới thiệu nào để gửi khi tìm nạp tập lệnh. Các giá trị có thể là không tham khảo, không tham gia-khi xuống cấp, nguồn gốc, đồng nghĩa, nguồn gốc nghiêm ngặt, v.v. |
sự toàn vẹn | JavaScript: The Definitive Guide 7 Chỉ định rằng một tác nhân người dùng có thể sử dụng để xác minh rằng tài nguyên được tìm nạp đã được cung cấp miễn phí thao tác bất ngờ. |
Nomodule | JavaScript: The Definitive Guide 8 Chỉ định rằng tập lệnh không nên được thực thi trong các trình duyệt hỗ trợ các mô -đun ES2015. |
Bạn muốn kiểm tra xem bạn biết JavaScript bao nhiêu?