Risposte:
Includi 'use strict';
come prima istruzione in una funzione di wrapping, quindi influisce solo su quella funzione. Questo evita problemi durante la concatenazione di script non severi.
Vedi l'ultimo post sul blog di Douglas Crockford, Strict Mode Is Coming To Town .
Esempio da quel post:
(function () {
'use strict';
// this function is strict...
}());
(function () {
// but this function is sloppy...
}());
Aggiornamento: Nel caso in cui non si desideri avvolgere in funzione immediata (ad es. Si tratta di un modulo nodo), è possibile disabilitare l'avviso.
Per JSLint (per Zhami ):
/*jslint node: true */
Per JSHint :
/*jshint strict:false */
o (per Laith Shadeed )
/* jshint -W097 */
Per disabilitare qualsiasi avviso arbitrario da JSHint, controlla la mappa nel codice sorgente JSHint (dettagli nei documenti ).
Aggiornamento 2: JSHint supporta l' node:boolean
opzione. Vedi .jshintrc
su github .
/* jshint node: true */
-1
/*jshint strict:false */
, per rendere più chiaro ciò che stai facendo (a meno che non ci sia un vantaggio particolare per il tuo codice numerico di cui non sono a conoscenza)
"use strict";
una volta per file.
Se stai scrivendo moduli per NodeJS, sono già incapsulati. Dì a JSLint che hai il nodo includendo nella parte superiore del tuo file:
/*jslint node: true */
/*jshint strict:false */
"node": true
a .jshintrc
Suggerirei invece di usare jshint .
Permette di sopprimere questo avviso tramite /*jshint globalstrict: true*/
.
Se stai scrivendo una libreria, suggerirei di usare il rigoroso globale solo se il tuo codice è incapsulato in moduli come nel caso di nodejs.
Altrimenti forzeresti chiunque usi la tua libreria in modalità rigorosa.
strict: 'global'
ora e vedi jshint.com/docs/options/#globalstrict
Ho iniziato a creare un'applicazione Node.js / browserify seguendo il post sul blog JavaScript multipiattaforma . E ho riscontrato questo problema, perché il mio nuovissimo Gruntfile non ha superato jshint.
Fortunatamente ho trovato una risposta nel libro Leanpub su Grunt :
Se lo proviamo ora, analizzeremo il nostro Gruntfile ... e otterremo alcuni errori:
$ 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.
Entrambi gli errori sono dovuti al fatto che Gruntfile è un programma Node e, per impostazione predefinita, JSHint non riconosce o consente l'utilizzo
module
e la versione di stringa diuse strict
. Possiamo impostare una regola JSHint che accetterà i nostri programmi Node. Modifichiamo la nostra configurazione dell'attività jshint e aggiungiamo un tasto opzioni:jshint: { options: { node: true }, }
Aggiungendo node: true
a jshint options
, per mettere jshint in "Modalità nodo", ho rimosso entrambi gli errori.
Aggiungi un file .jslintrc (o .jshintrc nel caso di jshint) alla radice del tuo progetto con il seguente contenuto:
{
"node": true
}
Non c'è nulla di innato nella forma della stringa.
Invece di evitare la forma rigorosa "globale" per preoccuparsi di concatenare javascript non rigoroso, probabilmente è meglio semplicemente correggere il maledetto javascript non rigoroso.
Penso che tutti abbiano perso la parte "improvvisamente" di questa domanda. Molto probabilmente, il tuo .jshintrc ha un errore di sintassi, quindi non include la riga "browser". Eseguilo attraverso un validatore json per vedere dove si trova l'errore.
Ecco come è semplice: se vuoi essere rigoroso con tutto il tuo codice, aggiungi "use strict";
all'inizio del tuo JavaScript.
Ma se vuoi solo essere rigoroso con parte del tuo codice, usa il modulo di funzione. Ad ogni modo, ti consiglierei di usarlo all'inizio del tuo JavaScript perché questo ti aiuterà a essere un programmatore migliore.
"use strict";
all'inizio del mio file JS, quindi potrebbe non essere del tutto vero.
"use strict";
, in cui è appena posizionato nella parte superiore del codice. Permette solo "use strict;"
se avvolto in una funzione. (JS_Hint_ ti consente di utilizzare il modulo globale, tuttavia - vedi la risposta sopra per l'impostazione necessaria).