Réponses:
Inclure 'use strict';
comme première instruction dans une fonction d'habillage, de sorte qu'elle n'affecte que cette fonction. Cela évite les problèmes lors de la concaténation de scripts qui ne sont pas stricts.
Voir le dernier article de blog de Douglas Crockford, Strict Mode Is Coming To Town .
Exemple de ce poste:
(function () {
'use strict';
// this function is strict...
}());
(function () {
// but this function is sloppy...
}());
Mise à jour: dans le cas où vous ne souhaitez pas encapsuler une fonction immédiate (par exemple, il s'agit d'un module de nœud), vous pouvez désactiver l'avertissement.
Pour JSLint (par Zhami ):
/*jslint node: true */
Pour JSHint :
/*jshint strict:false */
ou (selon Laith Shadeed )
/* jshint -W097 */
Pour désactiver tout avertissement arbitraire de JSHint, vérifiez la carte dans le code source de JSHint (détails dans la documentation ).
Mise à jour 2: JSHint prend en charge l' node:boolean
option. Voir .jshintrc
sur github .
/* jshint node: true */
-1
/*jshint strict:false */
de rendre plus clair ce que vous faites (à moins qu'il n'y ait un avantage particulier à votre code numérique que je ne connais pas)
"use strict";
qu'une seule fois par fichier.
Si vous écrivez des modules pour NodeJS, ils sont déjà encapsulés. Dites à JSLint que vous avez un nœud en incluant en haut de votre fichier:
/*jslint node: true */
/*jshint strict:false */
"node": true
à .jshintrc
Je suggère d'utiliser à la place jshint .
Il permet de supprimer cet avertissement via /*jshint globalstrict: true*/
.
Si vous écrivez une bibliothèque, je ne suggérerais d'utiliser global strict que si votre code est encapsulé dans des modules comme c'est le cas avec nodejs.
Sinon, vous forceriez tous ceux qui utilisent votre bibliothèque en mode strict.
strict: 'global'
maintenant et consultez jshint.com/docs/options/#globalstrict
J'ai commencé à créer une application Node.js / browserify suite à l' article de blog JavaScript multiplateforme . Et je suis tombé sur ce problème, car mon tout nouveau Gruntfile n'a pas réussi jshint.
Heureusement, j'ai trouvé une réponse dans le livre de Leanpub sur Grunt :
Si nous l'essayons maintenant, nous analyserons notre Gruntfile… et obtiendrons quelques erreurs:
$ 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.
Les deux erreurs sont dues au fait que le Gruntfile est un programme Node, et par défaut JSHint ne reconnaît pas ou n'autorise pas l'utilisation de
module
et la version de chaîne deuse strict
. Nous pouvons définir une règle JSHint qui acceptera nos programmes Node. Modifions notre configuration de tâche jshint et ajoutons une clé d'options:jshint: { options: { node: true }, }
L'ajout node: true
de jshint options
, pour mettre jshint en "mode Node", a supprimé les deux erreurs pour moi.
Ajoutez un fichier .jslintrc (ou .jshintrc dans le cas de jshint) à la racine de votre projet avec le contenu suivant:
{
"node": true
}
Il n'y a rien de mal à la forme des chaînes.
Plutôt que d'éviter la forme stricte "globale" par souci de concaténer du javascript non strict, il est probablement préférable de simplement corriger le fichu javascript non strict pour qu'il soit strict.
Je pense que tout le monde a raté la partie "soudainement" de cette question. Très probablement, votre .jshintrc a une erreur de syntaxe, il n'inclut donc pas la ligne «navigateur». Exécutez-le via un validateur json pour voir où se trouve l'erreur.
C'est aussi simple que cela: Si vous voulez être strict avec tout votre code, ajoutez-le "use strict";
au début de votre JavaScript.
Mais si vous ne voulez être strict qu'avec une partie de votre code, utilisez le formulaire de fonction. Quoi qu'il en soit, je vous recommande de l'utiliser au début de votre JavaScript, car cela vous aidera à être un meilleur codeur.
"use strict";
haut de mon fichier JS, donc cela pourrait ne pas être entièrement vrai.
"use strict";
, où elle est simplement placée en haut de votre code. Il autorise uniquement "use strict;"
lorsqu'il est enveloppé dans une fonction. (JS_Hint_ vous permet cependant d'utiliser le formulaire global - voir la réponse ci-dessus pour le paramètre nécessaire).