Gibt es trotzdem zu prüfen, ob der strikte Modus 'Use strict' erzwungen wird, und wir wollen anderen Code für den strikten Modus und anderen Code für den nicht strikten Modus ausführen. der Suche nach Funktion wie isStrictMode();//boolean
Gibt es eine Möglichkeit zu überprüfen, ob der strikte Modus erzwungen wird?
Antwort
Die Tatsache, dass this
in einer Funktion im globalen Kontext genannt wird nicht auf das globale Objekt Punkt verwendet werden Strict-Modus zu erkennen:
var isStrict = (function() { return !this; })();
Demo:
> echo '"use strict"; var isStrict = (function() { return !this; })(); console.log(isStrict);' | node
true
> echo 'var isStrict = (function() { return !this; })(); console.log(isStrict);' | node
false
Yep, this
ist 'undefined'
innerhalb einer globalen Methode, wenn Sie im strikten Modus sind.
function isStrictMode() {
return (typeof this == 'undefined');
}
function isStrictMode() {
try{var o={p:1,p:2};}catch(E){return true;}
return false;
}
Sieht aus, als hättest du schon eine Antwort bekommen. Aber ich habe schon etwas Code geschrieben. Also hier
Das ist besser als Mehdis Antwort, denn sie wird überall funktionieren, nicht nur im globalen Rahmen. Ups. :) – mgol
Dies führt zu einem Syntaxfehler, der auftritt, bevor der Code ausgeführt wird, damit er nicht abgefangen werden kann ... – skerit
Dies funktioniert nicht in ES6, da die Überprüfung entfernt wird, um berechnete Eigenschaftsnamen zuzulassen. –
Ich ziehe es etwas, das keine Ausnahme nicht verwendet und arbeitet in jedem Kontext, nicht nur global:
var mode = (eval("var __temp = null"), (typeof __temp === "undefined")) ?
"strict":
"non-strict";
Es nutzt die Tatsache, die im strikten Modus eval
nicht eine neue Variable einführt in der äußere Kontext.
Nur aus Neugier, wie kugelsicher ist das 2015, jetzt da ES6 da ist? –
Ich verifiziere, dass es in ES6 auf neuesten Chrome und Nodejs funktioniert. –
Elegant und funktionierend, danke! – rudyryk
eleganteren Weg: wenn "das" Objekt ist, wandelt es in wahre
"use strict"
var strict = (function() { return !!!this })()
if (strict) {
console.log ("strict mode enabled, strict is " + strict)
} else {
console.log ("strict mode not defined, strict is " + strict)
}
- 1. Gibt es eine Möglichkeit zu überprüfen, ob ein DOM-Element dynamisch erstellt wird oder nicht?
- 2. Gibt es eine Möglichkeit zu überprüfen, ob es symbolische Links gibt, die auf ein Verzeichnis verweisen?
- 3. Gibt es eine Möglichkeit zu überprüfen, ob ein TextView Text abgeschnitten wird
- 4. Gibt es eine Möglichkeit zu überprüfen, ob eine Abrechnungs/Bestellposition tatsächlich in der Software vorhanden ist?
- 5. Gibt es eine Möglichkeit, programmgesteuert zu überprüfen, ob bestimmte mobileconfig aktiviert wurde?
- 6. Gibt es eine Möglichkeit zu überprüfen, ob ein istream im Binärmodus geöffnet wurde?
- 7. Gibt es eine Möglichkeit herauszufinden, ob eine Softwaretastatur angezeigt wird?
- 8. Gibt es eine Möglichkeit zu überprüfen, ob der Benutzer momentan nicht aktiv ist?
- 9. Entity Framework: Gibt es eine Möglichkeit zu überprüfen, ob der Kontext ein Objekt hat?
- 10. Gibt es eine Möglichkeit, 3G-Verbindung unter Linux zu überprüfen?
- 11. Gibt es eine Möglichkeit zu überprüfen, ob der Wert im Objekt ohne foreach gesetzt ist?
- 12. In .NET MVC gibt es eine einfache Möglichkeit zu überprüfen, ob ich auf der Homepage bin?
- 13. Gibt es eine Möglichkeit zu überprüfen, ob zwei Collections dieselben Elemente enthalten, unabhängig von der Reihenfolge?
- 14. MQTT - Gibt es eine Möglichkeit zu überprüfen, ob der Client noch verbunden ist
- 15. Gibt es eine Möglichkeit zu bestimmen, ob Browser Telefonverbindungen
- 16. Gibt es eine Möglichkeit zu überprüfen, ob eine Bean im Spring-Kontext definiert ist?
- 17. Gibt es eine schnellere/bessere Möglichkeit zu überprüfen, ob eine URL erreichbar ist als cURL?
- 18. Gibt es eine gute Möglichkeit, Rückgabetypen beim Refactoring zu überprüfen?
- 19. Gibt es eine Möglichkeit, den Pufferspeicher zu überprüfen?
- 20. Gibt es eine kürzere Möglichkeit, alle Videoformate zu überprüfen?
- 21. In groovy, gibt es eine Möglichkeit zu überprüfen, ob ein Objekt eine bestimmte Methode hat?
- 22. Gibt es eine Möglichkeit zu überprüfen, ob android WindowManager bereits eine Ansicht enthält?
- 23. Gibt es eine Möglichkeit zu überprüfen, ob eine Zeichenfolge einen Unicode-Buchstaben enthält?
- 24. Gibt es eine Möglichkeit zu überprüfen, ob eine LINQ to SQL-Entität geändert wurde?
- 25. Wie wird der strikte Modus ("use strict";) von Funktionen geerbt?
- 26. Gibt es eine Möglichkeit zu überprüfen, ob eine native Javascript-Funktion ein Affe-Patch ist?
- 27. Gibt es eine Möglichkeit zu überprüfen, ob eine Datei vollständig mit PHP hochgeladen wurde?
- 28. Gibt es eine Möglichkeit zu überprüfen, ob eine VBScript-Funktion definiert ist?
- 29. Gibt es eine schnellere Möglichkeit zu überprüfen, ob eine externe Webseite existiert?
- 30. Gibt es eine Möglichkeit zu überprüfen, ob ein Windows-Registrierungsschlüssel flüchtig ist (REG_OPTION_VOLATILE)?
Großen. Das ist elegant und funktioniert überall. –
Zur Verdeutlichung ist die return-Anweisung äquivalent zu 'return this === undefined', es wird nicht mit dem globalen Objekt verglichen, es wird nur überprüft, ob' this' existiert. – aljgom