javascript - jshintrc - jslint npm
Problema de JSLint con ''ventana'' como variable global (5)
Para que JSLint sepa que reconoce la window
como un objeto global, agregue esta directiva en la parte superior de su archivo:
/*global window*/
Solía poder usar:
/*jslint browser: true */
pero esto ya no parece funcionar. Ahora, de acuerdo con la ayuda de JSHint con respecto a la opción del browser
:
No proporciona
self
owindow
; tendrá que solicitar estos alias del temido objeto global usted mismo.
No estoy seguro de cuándo se realizó ese cambio, pero me tuvo bloqueado por un tiempo.
Así que estoy usando JSLint para tratar de detectar errores. Desactivo algunas opciones que no me gustan, pero no veo ninguna forma de permitir el uso de la variable global de la window
. Bueno, existe la opción de Widget de Yahoo, pero eso es excesivo.
¿Cuál es el problema con el uso de ''ventana'', por qué JSLint dice que está causando errores?
Si no desea especificar esto en cada archivo, puede configurarlo globalmente en su archivo de configuración eslintrc de esta manera:
"globals": {
"window": true,
}
Simplemente haga un comentario en su script así:
/*global window */
... your script goes here
Este comentario le indicará a JSLint que la window
está definida en otro lugar.
Ver: http://www.JSLint.com/lint.html ,
JSLint también reconoce un
/* global */
comentario que puede indicar a JSLint que las variables utilizadas en este archivo se definieron en otros archivos. El comentario puede contener una lista de nombres separados por comas. Cada nombre puede ser seguido opcionalmente por dos puntos y verdadero o falso, cierto indica que la variable puede ser asignada por este archivo, y falso indicando que la asignación no está permitida, que es la predeterminada.
Cuando desee que la ventana sea global por defecto sin tener que aplicar el comentario a su secuencia de comandos, puede agregar predef:["window"]
al parámetro literal del objeto dentro de la función JSLINT
de su archivo local jslint.js
.
Por cierto, estoy usando predef:["$","window"]
para tener jQuery global también.
Actualizar:
Esta respuesta fue correcta en 2009. A partir de ahora, debe utilizar la solución /*jslint browser: true*/
proporcionada por Matt Clarkson.
Tuve que usar las dos respuestas anteriores en este código para deshacerme de todas las advertencias:
/*jslint browser:true*/
/*global window*/
// eventBoiler v0.1.1 by @ryanpcmcquen
// https://github.com/ryanpcmcquen/eventBoiler
(function (win, doc) {
''use strict'';
win.eventBoiler = function (selector, typeOfEvent, func) {
doc.querySelector(selector).addEventListener(typeOfEvent, func);
};
win.eventBoiler.all = function (selectors, typeOfEvent, func) {
Array.prototype.slice.call(doc.querySelectorAll(selectors)).map(function (i) {
i.addEventListener(typeOfEvent, func);
});
};
}(window, document));
Entonces, para mí, esta es la solución cuando utilizo el sitio web JSLint :
/*jslint browser:true*/
/*global window*/
/*jslint browser: true*/
Es la solución correcta para esto.
2017-07-07: La documentación de JSLint ahora dice:
browser
... No proporciona auto o ventana; tendrá que solicitar estos alias del temido objeto global usted mismo.
y
La directiva / global / solo se puede usar cuando se selecciona la opción Asumir un navegador.
Entonces, necesitarás usar:
/* jslint browser */
/* global window */