Như một quy ước phong cách Tôi thích được rõ ràng khi tôi truy cập vào các biến trong phạm vi toàn cầu, thíchTôi có nên sử dụng tự hoặc cửa sổ để tham khảo phạm vi toàn cầu không?
window.example = "Hello";
window.alert(window.example);
để ít tiết
example = "Hello";
alert(example);
bây giờ tôi có một mô-đun có thể được sử dụng trực tiếp từ trình duyệt hoặc nếu chúng có sẵn, từ một nhân viên web. Trong công nhân web, đối tượng toàn cầu được gọi là self
, trong khi trình duyệt được gọi là window
.
Đối tượng window
có tự sở hữu, vì vậy self.example = "Hello"
sẽ làm việc trong cả hai tình huống, vì vậy miễn là không ai redeclares self
(như họ thường làm: var self = this).
Quy ước tốt nhất để làm gì?
- Sử dụng
self
và hy vọng không ai khai báo một mâu thuẫnself
. - Nếu
window
được xác định, hãy sử dụngwindow
, nếu không hãy sử dụngself
. - Cái gì khác?
Có suy nghĩ về điều đó, tôi có xu hướng tiếp tục với bước thứ hai.
Đáng ngạc nhiên, điều này dường như ném một lỗi tham chiếu khi được sử dụng trong nhân viên web. Chrome cho biết: "ReferenceError: Không thể tìm thấy biến: cửa sổ". Tôi nên đề cập rằng tôi đang sử dụng requireJS để tải mô-đun này từ nhân viên của tôi, vì vậy tôi đoán đó có thể là nguồn gốc của một số sự kỳ quặc. – RichardTowers
xin lỗi, tôi quên việc xử lý khắc nghiệt của một biến không tồn tại. sửa nó. – matt3141
'global = typeof window! ==" undefined "&& window! == null? cửa sổ: tự; 'cũng có vẻ hoạt động không có lỗi. Tôi thực sự thích câu trả lời của @ Pointy. – RichardTowers