Respuestas:
Incluir 'use strict';
como la primera declaración en una función de ajuste, por lo que solo afecta a esa función. Esto evita problemas al concatenar scripts que no son estrictos.
Vea la última publicación de blog de Douglas Crockford Strict Mode Is Coming To Town .
Ejemplo de esa publicación:
(function () {
'use strict';
// this function is strict...
}());
(function () {
// but this function is sloppy...
}());
Actualización: en caso de que no desee ajustarse a la función inmediata (por ejemplo, es un módulo de nodo), puede desactivar la advertencia.
Para JSLint (por Zhami ):
/*jslint node: true */
Para JSHint :
/*jshint strict:false */
o (según Laith Shadeed )
/* jshint -W097 */
Para deshabilitar cualquier advertencia arbitraria de JSHint, verifique el mapa en el código fuente de JSHint (detalles en documentos ).
Actualización 2: JSHint admite la node:boolean
opción. Ver .jshintrc
en github .
/* jshint node: true */
-1
/*jshint strict:false */
, para hacerlo más claro lo que está haciendo (a menos que haya un beneficio particular a su código numérico que no soy consciente de)
"use strict";
una vez por archivo.
Si está escribiendo módulos para NodeJS, ya están encapsulados. Dígale a JSLint que tiene un nodo al incluirlo en la parte superior de su archivo:
/*jslint node: true */
/*jshint strict:false */
"node": true
a .jshintrc
Sugeriría usar jshint en su lugar.
Permite suprimir esta advertencia a través de /*jshint globalstrict: true*/
.
Si está escribiendo una biblioteca, solo sugeriría usar global estricto si su código está encapsulado en módulos, como es el caso de nodejs.
De lo contrario, obligaría a todos los que usan su biblioteca a un modo estricto.
strict: 'global'
ahora y vea jshint.com/docs/options/#globalstrict
Comencé a crear una aplicación Node.js / browserify después de la publicación del blog Cross Platform JavaScript . Y me encontré con este problema, porque mi nuevo Gruntfile no pasó jshint.
Afortunadamente encontré una respuesta en el libro Leanpub sobre Grunt :
Si lo intentamos ahora, escanearemos nuestro Gruntfile ... y obtendremos algunos errores:
$ 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.
Ambos errores se deben a que Gruntfile es un programa Node y, por defecto, JSHint no reconoce ni permite el uso de
module
y la versión de cadena deuse strict
. Podemos establecer una regla JSHint que acepte nuestros programas Node. Editemos nuestra configuración de tarea jshint y agreguemos una clave de opciones:jshint: { options: { node: true }, }
Agregando node: true
a jshint options
, para poner jshint en "Modo Nodo", eliminé ambos errores para mí.
Agregue un archivo .jslintrc (o .jshintrc en el caso de jshint) en la raíz de su proyecto con el siguiente contenido:
{
"node": true
}
No hay nada innatamente mal con la forma de la cadena.
En lugar de evitar la forma estricta "global" por la preocupación de concatenar JavaScript no estricto, probablemente sea mejor arreglar el maldito JavaScript no estricto para que sea estricto.
Creo que todos se perdieron la parte "repentina" de esta pregunta. Lo más probable es que su .jshintrc tenga un error de sintaxis, por lo que no incluye la línea del 'navegador'. Ejecútelo a través de un validador json para ver dónde está el error.
Así de simple es: si desea ser estricto con todo su código, agregue "use strict";
al comienzo de su JavaScript.
Pero si solo quiere ser estricto con algunos de sus códigos, use el formulario de función. De todos modos, le recomendaría que lo use al comienzo de su JavaScript porque esto lo ayudará a ser un mejor codificador.
"use strict";
en la parte superior de mi archivo JS, por lo que esto podría no ser del todo cierto.
"use strict";
, donde solo se coloca en la parte superior de su código. Solo permite "use strict;"
cuando está envuelto en una función. (Sin embargo, JS_Hint_ le permite utilizar el formulario global; consulte la respuesta anterior para conocer la configuración necesaria).