Tôi tự hỏi wheter một khối javascript/chức năng là allways có sẵn một lần nạp. Bởi vì tôi đã thử nghiệm một cái gì đó và bây giờ tôi là một chút bối rối. Tôi đã xác định một khối tập lệnh thành một div. Khối script có chức năng xử lý sự kiện cho một phần tử để tải lại div với ajax. Cuộc gọi ajax trả về html thuần túy của div và thay thế nó bằng giá trị hiện tại. Nhưng nó có nghĩa là để thay thế các kịch bản mà làm cho việc thực hiện cũng có. Tôi đã nghĩ rằng kịch bản sẽ bị cắt bỏ thi hành sau khi tuyên bố thay thế. Nhưng nó không. Các dòng mã sau khi câu lệnh thay thế được thực thi Vì vậy, các công cụ này hoạt động như thế nào. Làm thế nào để bạn mô tả thời gian sống của một khối tập lệnh?Làm cách nào để biết thời gian sống của khối tập lệnh hoặc mã javascript?
Trả lời
Khi mã được chứa trong phần tử script
được đánh giá, kết quả của việc đánh giá mã đó trở thành một phần của môi trường thời gian chạy của trang. Việc xóa phần tử script
không loại bỏ các cấu trúc kết quả (chức năng, v.v.) khỏi môi trường. Vì vậy, nếu kịch bản định nghĩa các hàm, hoặc móc các trình xử lý sự kiện cho các phần tử, hoặc tạo các thuộc tính mới trên các đối tượng hiện có (bao gồm đối tượng chung), các hàm, trình xử lý và các thuộc tính đó vẫn còn trong bộ nhớ ngay cả khi script
xác định chúng bị loại bỏ khỏi DOM (tùy thuộc vào bộ sưu tập rác JavaScript thông thường; ví dụ, các đối tượng không được tham chiếu ở bất kỳ nơi nào đủ điều kiện cho GC, nhưng phần tử script
không có tính năng này). Các yếu tố script
chỉ đơn thuần là một cơ chế để truyền đạt mã cho trình duyệt.
- 1. Làm cách nào để biết bộ hẹn giờ bị xóa hoặc hết thời gian trong javascript?
- 2. Cách chạy ma thuật IPython từ tập lệnh (hoặc định thời gian tập lệnh Python)
- 3. Làm cách nào để đặt thời gian trễ vào tập lệnh của tôi?
- 4. Làm cách nào để đo thời gian thực thi mã trong VBScript hoặc JavaScript?
- 5. Làm cách nào để lấy mã máy của lệnh lắp ráp được biết đến tại thời gian biên dịch?
- 6. Thời gian chủ đề JMS để sống
- 7. Làm thế nào để biết bao nhiêu thời gian bằng cách "đồng bộ" mã, trong Java?
- 8. Làm cách nào để biết Máy chủ thời gian chạy nào hiện đang chạy mã của tôi?
- 9. Làm thế nào để đặt biến môi trường chỉ trong khoảng thời gian của tập lệnh?
- 10. Làm thế nào để dễ dàng thời gian một khối mã C#?
- 11. Làm cách nào để bạn có thể đặt giới hạn thời gian cho tập lệnh PowerShell để chạy?
- 12. Làm cách nào để mã hóa các khoảng thời gian cho URL trong Javascript?
- 13. Tập lệnh PHP ... quay ngược thời gian?
- 14. Thời gian tải tập lệnh JQuery
- 15. Làm cách nào để liên kết các khối Unicode thành Ngôn ngữ/Tập lệnh?
- 16. Thời gian thực của mã C
- 17. Làm cách nào để biết tập lệnh Perl của tôi có đang chạy trong Windows không?
- 18. Làm thế nào để phân biệt giữa thời gian để sống và thời gian nhàn rỗi trong ehcache
- 19. Nhầm lẫn giữa gian và thời gian địa phương trong mã thực tế đời sống
- 20. thời gian chạy phạt của C++ thử khối
- 21. Làm cách nào để biết ứng dụng win32 có sử dụng thời gian chạy .NET
- 22. Làm cách nào để tôi hết thời gian khi mục danh sách bị lỗi hoặc mất quá nhiều thời gian?
- 23. Sự kiện tải lên Javascript - làm cách nào để biết liệu tập lệnh đã được tải chưa?
- 24. Tập lệnh SQL mất nhiều thời gian để chạy
- 25. Thời gian sống của một tạm thời chưa được đặt tên được xây dựng nếu biểu thức điều kiện
- 26. Làm thế nào để tôi lập trình thả mốc thời gian vào một mốc thời gian khối trong Visio
- 27. Làm cách nào để có được đường dẫn của tập lệnh hiện đang chạy với Javascript?
- 28. Làm cách nào để chuyển đổi chế độ hiển thị của thẻ tập lệnh?
- 29. Làm thế nào để sửa đổi mã javascript tại thời gian chạy?
- 30. làm thế nào để chuyển hướng kết quả của lệnh thời gian linux để một số tập tin
Cảm ơn bạn đã trả lời. Tôi đã thêm một quastion nữa. Sau khi tải lại chính xác cùng một khối tập lệnh div với cùng một hàm chính xác đang được tải. Vì vậy, họ đã được công bố hoặc thay thế hoặc bỏ qua? –
@HalilIbrahim: Mã được chạy lại. Nếu bạn có các hàm được khai báo ở phạm vi toàn cục, các hàm đã được thay thế bằng các hàm mới. Nếu bạn có các biến toàn cục được khai báo * không có * initializers (vì vậy, chỉ 'var foo;' không 'var foo = 42;'), vì biến đã được khai báo, khai báo thứ hai sẽ bị bỏ qua. Nếu bạn có initializers hoặc bài tập (vì vậy, 'var foo = 42;' hoặc chỉ 'foo = 42;'), những người đang chạy một lần nữa và do đó 'foo' được thiết lập (trở lại) để' 42'. Vv Tất cả các hiệu ứng của việc chạy mã một lần thứ hai (thứ ba, thứ tư) xảy ra. –
@Crowder: Cảm ơn câu trả lời. –