validador sintaxis script online eslinter javascript jslint

javascript - script - sintaxis js online



JSLint está informando de repente: Use la forma de función de "uso estricto" (8)

Agregue un archivo .jslintrc (o .jshintrc en el caso de jshint) en la raíz de su proyecto con el siguiente contenido:

{ "node": true }

Incluyo la declaración:

"use strict";

al principio de la mayoría de mis archivos Javascript.

JSLint nunca antes había advertido sobre esto. Pero ahora es, diciendo:

Utilice la forma de función de "uso estricto".

¿Alguien sabe cuál sería la "forma de función"?


Así de simple es: si desea ser estricto con todo su código, agregue "use strict"; al inicio de tu JavaScript.

Pero si solo quiere ser estricto con parte de su código, use la función de formulario. De todos modos, te recomendaría que lo utilices al principio de tu JavaScript porque esto te ayudará a ser un mejor programador.


Comencé a crear una aplicación Node.js / browserify después de la publicación de blog de Cross Platform JavaScript . Y me encontré con este problema, porque mi nuevo Gruntfile no pasó Jshint.

Por suerte encontré una respuesta en el libro de Leanpub en 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, de forma predeterminada, JSHint no reconoce ni permite el uso del module y la versión de cadena de use strict . Podemos establecer una regla JSHint que aceptará nuestros programas de Nodo. Vamos a editar nuestra configuración de tareas jshint y agregar una clave de opciones:

jshint: { options: { node: true }, }

Adición de node: true a las options jshint, para poner jshint en "Node mode", eliminé ambos errores para mí.


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.


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.

Ver la última publicación de blog de Douglas Crockford El modo estricto está llegando a la ciudad .

Ejemplo de ese post:

(function () { ''use strict''; // this function is strict... }()); (function () { // but this function is sloppy... }());

Actualización: En caso de que no quiera ajustar 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 (por Laith Shadeed )

/* jshint -W097 */

Para deshabilitar cualquier advertencia arbitraria de JSHint, verifique el mapa en el código fuente de JSHint (detalles en docs ).

Actualización 2: JSHint soporta el node:boolean opción node:boolean . Ver .jshintrc en github .

/* jshint node: true */


No hay nada de malo en la forma de la cadena.

En lugar de evitar la forma estricta "global" por la preocupación de concatenar javascript no estricto, probablemente es mejor corregir el maldito javascript no estricto para ser estricto.


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 */


Yo sugeriría usar jshint en jshint lugar.

Permite suprimir esta advertencia a través de /*jshint globalstrict: true*/ .

Si está escribiendo una biblioteca, solo sugeriría el uso de estricto global si su código está encapsulado en módulos, como es el caso de nodejs.

De lo contrario, forzarías a todos los que usan tu biblioteca a un modo estricto.