2012-01-13 27 views
6

tôi đã another question in SO about setTimeout(), nơi người dùng nói rằng nếu đối số chức năng là một chuỗi nó được đánh giá trong phạm vi toàn cầu, khôn ngoan khác nó không phải. Đây là một công cụ mở mắt, vì vậy tôi đã cố gắng tìm thêm thông tin về cách setTimeout thực sự hoạt động, nhưng nó không phải là một phần của thông số ECMaScript và thậm chí không có MDN có thông tin cụ thể mà tôi tìm thấy trong SO.setTimeout(): Nếu không được định nghĩa trong thông số EcmaScript, tôi có thể tìm hiểu cách hoạt động của nó?

Có một số tham chiếu tốt về cách hoạt động của setTimeout() không?

+2

[Đây] (https://developer.mozilla.org/en/DOM/window.setTimeout) là trang MDN. – Pointy

+1

Trong bản nháp HTML5: http://dev.w3.org/html5/spec/Overview.html#timers –

+0

MDN có một số thông tin hữu ích về nó: "Mã được thực thi bởi setTimeout() được chạy trong một ngữ cảnh thực thi riêng biệt với chức năng mà từ đó nó được gọi. " –

Trả lời

9

setTimeout và các thông số này không có trong đặc tả ECMAScript vì chúng không phải là tính năng JavaScript. Chúng là các đối tượng của đối tượng window của môi trường trình duyệt. Các môi trường khác (Windows Scripting Host, NodeJS, vv) sẽ không nhất thiết phải có các tính năng đó.

W3C đã cố gắng chuẩn hóa đối tượng window và các tính năng khác nhau của nó (bao gồm setTimeout), the latest is in the timers section of the HTML5 spec. Rất nhiều trong số đó đang mã hóa những trình duyệt đã làm, mặc dù một số của nó (như nói rằng giá trị khoảng thời gian tối thiểu phải là 4 [mili giây]) dường như (đối với tôi) ở ngoài vị trí cho một đặc tả và triển khai API tạo nên tâm trí riêng của họ (in tests, bạn có thể thấy các trình duyệt hiện tại vui vẻ thực hiện một khoảng thời gian ngắn hơn, với ngoại lệ rõ ràng của Opera mà dường như làm những gì spec nói).

+0

Wow những thông số kỹ thuật HTML5 luôn khiến tôi say sóng. Nhưng tôi đã không nghĩ về tình hình đối với công nhân web. – Pointy

+0

Tôi nghĩ rằng thông số W3C Window Object bị bỏ qua. HTML5 hoàn toàn xác định đối tượng 'window', hoặc ít nhất là cố gắng. –

+0

Bản nháp đó đầy một nửa là "cần phải viết cái này" hay "cái gì để đặt ở đây?" Loại cười cho một thông số kỹ thuật w3c. BTW, liên kết cuối cùng của bạn bị hỏng. – rvighne

5

Phương pháp setTimeout() là phương pháp trên đối tượng window. Bạn có thể tìm thấy những liên kết đến các tài liệu MDN dưới đây:

https://developer.mozilla.org/en/DOM/window.setTimeout

+0

Tôi vừa cập nhật rằng với một đề cập đến phạm vi được sử dụng để đánh giá các tham số chuỗi. – Pointy

Các vấn đề liên quan