web-dev-qa-db-fra.com

Jshint.com nécessite une «utilisation stricte». Qu'est-ce que ça veut dire?

Jshint.com donne l'erreur:

Ligne 36: var signin_found; Instruction "use strict" manquante.

70
user656925

Ajoutez "use strict" en haut de votre fichier js (à la ligne 1 de votre fichier .js):

"use strict";
...
function initialize_page()
{
    var signin_found;
    /*Used to determine which page is loaded / reloaded*/
    signin_found=document.getElementById('signin_button');
    if(signin_found) 
{

En savoir plus sur "use strict" dans une autre question ici sur stackoverflow:

Que fait "use strict" en JavaScript, et quel est le raisonnement derrière cela?

MISE À JOUR.

Il y a quelque chose qui ne va pas avec jshint.com, il vous oblige à mettre "use strict" à l'intérieur de chaque fonction, mais il devrait être autorisé à le définir globalement pour chaque fichier.

jshint.com pense que c'est faux.

"use strict";    
function asd()
{
}

Mais il n'y a rien de mal à cela ...

Il veut que vous mettiez "use strict" à chaque fonction:

function asd()
{
    "use strict";
}
function blabla()
{
    "use strict";
}

Ensuite, il dit:

Bon travail! JSHint n'a trouvé aucun problème avec votre code.

36
Czarek Tomczak

Mainteneur JSHint ici.

JSHint - la version utilisée sur le site Web - vous oblige à utiliser le mode strict au niveau de la fonction dans votre code. Il est très facile de désactiver cela, il vous suffit de décocher la case "Avertir lorsque le code n'est pas en mode strict":

jshint.com screenshot

Pourquoi n'autorisons-nous pas le mode strict global comme suggéré par @Czarek? Parce que certains des fichiers JavaScript utilisés sur votre page peuvent ne pas être compatibles avec le mode strict et le mode strict global cassera ce code. Pour utiliser le mode global strict, il existe une option appelée globalstrict.

J'espère que ça t'as aidé!

32
Anton Kovalyov

Je pense que c'est parce que jshint essaie de nous "protéger" contre le mode strict d'affectation accidentelle à l'ensemble du fichier. Et il est également bon d'envelopper le code avec une fonction anonyme, ou d'utiliser une sorte d'espace de noms.

par exemple. les deux fonctionnent en mode strict:

(function() {

   "use strict";

   function foo() {
        .....
   }

   function bar() {
        .....
   }
}());
10
Kornel Dylski

JSlint requiert que votre code soit en "mode strict"

Pour ce faire, ajoutez simplement "use strict"; en haut de votre code.

4
MikeD