JSLint est soudainement reporting: Utiliser la forme d'une fonction de “use strict”
Je inclure l'énoncé:
"use strict";
au début de la plupart de mes fichiers Javascript.
JSLint n'a jamais averti à ce sujet. Mais maintenant, il est, en disant:
Utiliser la forme d'une fonction de "use strict".
Personne ne sait ce qu'est la "forme d'une fonction" serait?
Vous devez vous connecter pour publier un commentaire.
Inclure
'use strict';
comme la première déclaration dans un emballage de fonction, de sorte qu'il n'affecte que la fonction. Cela permet d'éviter des problèmes lors de la concaténation des scripts qui ne sont pas strictes.Voir Douglas Crockford dernier post de blog Le Mode Strict Est Arrive En Ville.
Exemple de ce poste:
Mise à jour:
Dans le cas où vous ne voulez pas de les emballer dans une mise en fonction immédiate (par exemple, il est un nœud du module), vous pouvez désactiver l'avertissement.
Pour JSLint (par Zhami):
Pour JSHint:
ou (par Laith Shadeed)
De désactiver tout arbitraire d'avertissement de JSHint, consultez la carte dans JSHint code source (plus de détails dans docs).
Mise à jour 2: JSHint prend en charge
node:boolean
option. Voir.jshintrc
sur github.-1
/*jshint strict:false */
, pour rendre plus clair ce que vous êtes en train de faire (sauf si il y a un avantage à votre code numérique que je ne suis pas au courant)"use strict"
(car il n'a pas prévenu par défaut), alors la configuration de lanode
option pourtrue
ne tourne pas à l'avertissement offgrunt-contrib-jshint
). Il met en garde sur les'use strict'
par défaut. Réglage"globalstrcit": true
dans .jshintrc ou viaGruntfile.js
supprime cet avertissement. Autre façon de supprimer l'avertissement est le réglage de"node": true
. Mais oui, je ne reçois pas d'alerte par défaut. Aussiglobalstrict
est fixé àfalse
dans l'exemple.jshintrc
(github.com/jshint/jshint/blob/...) qui, j'imagine, reflète le comportement par défaut."use strict";
une fois par fichier."strict": [2, "global"]
/*jshint browserify: true */
permettra d'atteindre le même effet, et doit être utilisé si browserify est utilisé. Browserify, comme nodejs enveloppe le fichier à l'intérieur d'une IIFE.Si vous êtes à l'écriture de modules pour NodeJS, ils sont déjà encapsulé. Dire JSLint que vous avez nœud, y compris dans le haut de votre fichier:
/*jshint strict:false */
"node": true
pour .jshintrcJe vous suggère d'utiliser jshint à la place.
Il permet de supprimer cette alerte via
/*jshint globalstrict: true*/
.Si vous écrivez une bibliothèque, je voudrais seulement suggérer l'aide de global strict si votre code est encapsulé dans des modules comme c'est le cas avec nodejs.
Sinon, on aurait la force de tout le monde qui est à l'aide de votre bibliothèque en mode strict.
strict: 'global'
maintenant, et voir jshint.com/docs/options/#globalstrictJ'ai commencé à créer un Nœud.js/browserify demande à la suite de la La Croix-Plate-Forme De JavaScript blog. Et je suis tombé sur cette question, parce que ma nouvelle marque de Gruntfile ne passe pas jshint.
Heureusement, j'ai trouvé une réponse dans la Leanpub livre sur Grunt:
Ajoutant
node: true
à la jshintoptions
, pour mettre jshint en "mode Noeud", supprimé les deux erreurs pour moi.Il n'y a rien d'intrinsèquement mauvais avec le formulaire de chaîne.
Plutôt que d'éviter le "global" forme stricte pour s'inquiéter de la concaténation de non-stricte javascript, il est probablement préférable de résoudre le problème de la merde non stricte javascript doit être stricte.
Ajouter un fichier .jslintrc (ou .jshintrc dans le cas de jshint) à la racine de votre projet avec le contenu suivant:
Je pense que tout le monde a raté le "soudain" une partie de cette question. Très probablement, votre .jshintrc a une erreur de syntaxe, donc ce n'est pas y compris le navigateur ligne. Le lancer à travers un json validateur à voir où est l'erreur.
C'est comment il est simple: Si vous voulez être strict avec tout votre code, ajouter
"use strict";
au début de votre code JavaScript.Mais si vous voulez seulement être strict avec certains de votre code, utilisez la fonction de forme. De toute façon, je conseille de l'utiliser au début de votre JavaScript car cela vous aidera à être un meilleur programmeur.
"use strict";
en haut de mon fichier JS, donc cela pourrait ne pas être entièrement vrai."use strict";
, où il est juste placé en haut de votre code. Il permet seulement"use strict;"
quand enveloppé dans une fonction. (JS_Hint_ vous permet d'utiliser la forme globale, mais-voir la réponse ci-dessus pour le réglage nécessaire).