Was ist der Zweck istWas ist der Zweck if (typeof Fenster! == ‚undefined‘)
if (typeof window !== 'undefined')
des Aufrufs Ich sah es in JSPM plugin-css und einige andere Bibliotheken.
Was ist der Zweck istWas ist der Zweck if (typeof Fenster! == ‚undefined‘)
if (typeof window !== 'undefined')
des Aufrufs Ich sah es in JSPM plugin-css und einige andere Bibliotheken.
Es ist zu testen, ob das Skript in einem Web-Browser ausgeführt wird oder nicht.
In einer Webseite gibt es mehrere innere Objekte, wie window
, andere Umgebungen (wie Node.js) nicht window
haben, aber vielleicht andere Objekte wie console
(na ja, console
existiert jetzt in den meisten Browsern jetzt, aber es war ursprünglich nicht).
Es wird immer noch nicht gleich mit der Zeichenfolge "undefined" sein, aber richtig? Das ist '! ==' not '! =' – Blindy
@Blindy Der Typ des 'window' Objektes, wie vom' typeof' Operator zurückgegeben, ist gleich dem String ''undefined''. –
Oh ich sehe, das macht Sinn. Es ist der Typ, nicht das Objekt selbst. – Blindy
Dies kann dazu verwendet werden, um zu erkennen, ob Code in einer typischen Browser-Umgebung ausgeführt wird (zB eine Umgebung mit einem Browser DOM) oder in einer anderen JS-Umgebung, da das window
Objekt existiert in einem typischen Browser JS, aber existiert nicht in etwas wie node.js oder sogar ein webWorker in einem Browser.
Wenn das window
Objekt nicht vorhanden ist, dann
typeof window === 'undefined'
so dass der Code gefragt Sie:
if (typeof window !== 'undefined')
den if
Block ausgeführt werden, wenn das window
Objekt als Top-Level-Variable nicht vorhanden ist .
In dem spezifischen Code, den Sie verknüpft haben, ist es von der Ausführung von Browser-bezogenen Code, der DOM-Objekte wie document
verweist, wenn das Plugin zufällig in einer nicht-Browser-Umgebung verwendet wird.
@dandavis - woher kommt dein Kommentar zu 'Workers()'? Ich habe nichts über 'Workers()' gesagt. – jfriend00
@dandavis - Ich verstehe nicht, was der webWorker Code mit dieser Frage zu tun hat. Entschuldigung, aber ich verstehe deinen Kommentar einfach nicht. Dieser Code erkennt das Vorhandensein eines Browser-ähnlichen 'Fenster'-Objekts. Das allein kann Ihnen sagen, ob ein DOM und seine relevanten Objekte wahrscheinlich existieren (im Gegensatz zu node.js, wo dies nicht der Fall ist), aber es kann Ihnen nicht alles sagen, was Sie über Ihre Umgebung wissen möchten. Einige andere Dinge in der Umgebung erfordern möglicherweise andere Tests (die nicht Gegenstand der Frage waren). Und in dem angegebenen spezifischen Code wird entschieden, ob das DOM verwendet werden kann. – jfriend00
ein kleiner Punkt ist, dass nicht alle Browser-JS ein _window_ Top-Level-Objekt, Arbeiter zum Beispiel, aber typisch, du hast Recht;) – dandavis
für den Autor dieses Codes, und wie verwendet, es fragt: "bin ich in Chrome oder node.js?" ... dieser raffinierte Hybrid-Code funktioniert in "beiden" Orten läuft Javascript. – dandavis