Antworten:
Fügen Sie 'use strict';
als erste Anweisung in einer Verpackungsfunktion, so dass es nur diese Funktion beeinflusst. Dies verhindert Probleme beim Verketten von Skripten, die nicht streng sind.
Siehe Douglas Crockfords neuesten Blog-Beitrag Strict Mode Is Coming To Town .
Beispiel aus diesem Beitrag:
(function () {
'use strict';
// this function is strict...
}());
(function () {
// but this function is sloppy...
}());
Update: Wenn Sie die Sofortfunktion nicht einbinden möchten (z. B. ein Knotenmodul), können Sie die Warnung deaktivieren.
Für JSLint (per Zhami ):
/*jslint node: true */
Für JSHint :
/*jshint strict:false */
oder (per Laith Shadeed )
/* jshint -W097 */
Überprüfen Sie die Zuordnung im JSHint-Quellcode (Details in den Dokumenten ), um eine beliebige Warnung von JSHint zu deaktivieren .
Update 2: JSHint unterstützt node:boolean
Option. Siehe .jshintrc
bei Github .
/* jshint node: true */
-1
/*jshint strict:false */
, klarer zu machen, was Sie tun (es sei denn, Ihr numerischer Code hat einen besonderen Vorteil, den ich nicht kenne)
"use strict";
einmal pro Datei angeben zu müssen .
Wenn Sie Module für NodeJS schreiben, sind diese bereits gekapselt. Teilen Sie JSLint mit, dass Sie einen Knoten haben, indem Sie oben in Ihre Datei einfügen:
/*jslint node: true */
/*jshint strict:false */
"node": true
zu .jshintrc
Ich würde vorschlagen, stattdessen jshint zu verwenden.
Es ermöglicht die Unterdrückung dieser Warnung über /*jshint globalstrict: true*/
.
Wenn Sie eine Bibliothek schreiben, würde ich nur empfehlen, global strict zu verwenden, wenn Ihr Code in Module eingekapselt ist, wie dies bei nodejs der Fall ist.
Andernfalls würden Sie jeden, der Ihre Bibliothek verwendet, in den strengen Modus zwingen.
strict: 'global'
jetzt und sehen Sie jshint.com/docs/options/#globalstrict
Ich habe nach dem plattformübergreifenden JavaScript- Blogbeitrag mit der Erstellung einer Node.js / browserify-Anwendung begonnen . Und ich bin auf dieses Problem gestoßen, weil mein brandneues Gruntfile jshint nicht bestanden hat.
Zum Glück habe ich im Leanpub-Buch über Grunt eine Antwort gefunden :
Wenn wir es jetzt versuchen, werden wir unser Gruntfile scannen ... und einige Fehler erhalten:
$ grunt jshint Running "jshint:all" (jshint) task Linting Gruntfile.js...ERROR [L1:C1] W097: Use the function form of "use strict". 'use strict'; Linting Gruntfile.js...ERROR [L3:C1] W117: 'module' is not defined. module.exports = function (grunt) { Warning: Task "jshint:all" failed. Use --force to continue.
Beide Fehler sind darauf zurückzuführen, dass die Grunt-Datei ein Knotenprogramm ist und JSHint standardmäßig die Verwendung
module
und die Zeichenfolgenversion von nicht erkennt oder zulässtuse strict
. Wir können eine JSHint-Regel festlegen, die unsere Knotenprogramme akzeptiert. Lassen Sie uns unsere jshint-Taskkonfiguration bearbeiten und einen Optionsschlüssel hinzufügen:jshint: { options: { node: true }, }
Durch Hinzufügen node: true
zum jshint options
, um jshint in den "Knotenmodus" zu versetzen, wurden beide Fehler für mich entfernt.
Fügen Sie im Stammverzeichnis Ihres Projekts eine Datei .jslintrc (oder im Fall von jshint .jshintrc) mit folgendem Inhalt hinzu:
{
"node": true
}
An der Zeichenfolgenform ist von Natur aus nichts auszusetzen.
Anstatt die "globale" strenge Form zu vermeiden, um nicht strenges Javascript zu verketten, ist es wahrscheinlich besser, das verdammte nicht strenge Javascript einfach als streng zu korrigieren.
Ich denke, jeder hat den "plötzlich" Teil dieser Frage verpasst. Höchstwahrscheinlich weist Ihre .jshintrc-Datei einen Syntaxfehler auf, sodass die Zeile "Browser" nicht enthalten ist. Führen Sie es durch einen JSON-Validator, um festzustellen, wo der Fehler liegt.
So einfach ist das: Wenn Sie mit Ihrem gesamten Code streng umgehen möchten, fügen Sie ihn "use strict";
am Anfang Ihres JavaScript hinzu.
Wenn Sie jedoch nur mit einem Teil Ihres Codes streng sein möchten, verwenden Sie das Funktionsformular. Auf jeden Fall würde ich Ihnen empfehlen, es am Anfang Ihres JavaScript zu verwenden, da dies Ihnen hilft, ein besserer Programmierer zu sein.
"use strict";
oben in meine JS-Datei einfüge, sodass dies möglicherweise nicht ganz der Fall ist.
"use strict";
, bei der sie nur oben in Ihrem Code platziert wird. Es ist nur zulässig, "use strict;"
wenn es in eine Funktion eingeschlossen ist. (Mit JS_Hint_ können Sie jedoch das globale Formular verwenden. Die erforderliche Einstellung finden Sie in der obigen Antwort.)