Jaki jest cel wywołanieJaki jest cel if (typeof okno! == „niezdefiniowany”)
if (typeof window !== 'undefined')
Widziałem to w JSPM plugin-css, i kilka innych bibliotek.
Jaki jest cel wywołanieJaki jest cel if (typeof okno! == „niezdefiniowany”)
if (typeof window !== 'undefined')
Widziałem to w JSPM plugin-css, i kilka innych bibliotek.
Sprawdza, czy skrypt jest uruchamiany w przeglądarce internetowej, czy nie.
W internecie istnieje kilka wewnętrzne obiekty, takie jak window
innych środowisk (np node.js) nie będą miały window
ale mogą mieć inne obiekty jak console
(dobrze, console
istnieje obecnie w większości przeglądarek teraz, ale to nie było pierwotnie).
Za pomocą tego można wykryć, czy kod działa w typowym środowisku przeglądarki (np. Środowisko z DOM przeglądarki) lub w innym środowisku JS, ponieważ obiekt window
istnieje w typowym JS przeglądarki, ale nie istnieje w coś takiego jak node.js lub nawet webworker w przeglądarce.
Jeśli obiekt window
nie istnieje, wtedy
typeof window === 'undefined'
więc kod pytasz o:
if (typeof window !== 'undefined')
wykona blok if
jeśli obiekt window
istnieje jako zmienną najwyższego poziomu .
W określonym kodzie, który łączyłeś, nie należy uruchamiać kodu kierowanego na przeglądarkę, który odwołuje się do obiektów DOM, takich jak document
, jeśli wtyczka zostanie użyta w środowisku innym niż przeglądarka.
@dandavis - skąd pochodzi twój komentarz na temat 'Workers()'? Nie powiedziałem nic o 'Workers()'. – jfriend00
@dandavis - Nie rozumiem, jaki kod WebWorker ma do czynienia z tym pytaniem. Przepraszam, ale po prostu nie rozumiem twojego komentarza. Ten kod wykrywa obecność podobnego do przeglądarki obiektu 'window'. To samo może ci powiedzieć, czy DOM i jego odpowiednie obiekty prawdopodobnie istnieją (w przeciwieństwie do node.js, gdzie nie istnieją), ale nie może ci powiedzieć wszystkiego, co chcesz wiedzieć o swoim środowisku. Niektóre inne rzeczy w środowisku mogą wymagać innych testów (które nie były przedmiotem pytania). W specyficznym kodzie, do którego się odwołuje, służy do określenia, czy można użyć DOM. – jfriend00
Pomniejsze jest to, że nie wszystkie przeglądarki JS mają obiekt najwyższego poziomu _Window_, na przykład Robotnicy, ale typowo masz rację;) – dandavis
dla autora tego kodu, a także w pytaniu: "czy jestem uruchomiony w chrome lub node.js?" ... ten sprytny kod hybrydowy działa w "obu" miejscach uruchomień javascript. – dandavis