Estoy trabajando para hacer que todo nuestro código JS pase a través de jslint, a veces con muchas modificaciones con las opciones para obtener el código heredado por ahora, con la intención de corregirlo más tarde.Cómo reparar el error jslint 'No hacer funciones dentro de un bucle'?
Hay una cosa de la que jslint se queja por la que no tengo un workround. Es cuando se utilizan construcciones como esta, obtenemos el error 'No hacer funciones dentro de un bucle'.
for (prop in newObject) {
// Check if we're overwriting an existing function
if (typeof newObject[prop] === "function" && typeof _super[prop] === "function" &&
fnTest.test(newObject[prop])) {
prototype[prop] = (function(name, func) {
return function() {
var result, old_super;
old_super = this._super;
this._super = _super[name];
result = func.apply(this, arguments);
this._super = old_super;
return result;
};
})(prop, newObject[prop]);
}
}
Este bucle es parte de una implementación de JS de la herencia clásica donde las clases que se extienden las clases existentes conservan la propiedad súper de la clase extendida cuando se invoca un miembro de la clase extendida. Solo para aclarar, la implementación anterior está inspirada en este blog post de John Resig.
Pero también tenemos otras instancias de funciones creadas dentro de un bucle.
La única solución hasta el momento es excluir estos archivos JS de jslint, pero nos gustaría usar jslint para la validación de código y la comprobación de sintaxis como parte de nuestra integración continua y flujo de trabajo de compilación.
¿Existe alguna forma mejor de implementar una funcionalidad como esta o existe alguna forma de modificar código como este a través de jslint?
¿Qué es un "generador de funciones" mejor que crear una nueva función por iteración de bucle? ¿No es lo mismo? – Gili
@Gili: El código para crear la función make_handler se ejecuta en el punto que dice 'function make_handler (div_id)'. Una vez dentro del bucle 'for',' make_handler' ahora es una referencia a esa función y no se vuelve a crear para cada iteración del bucle. –
¿No sería más eficiente asignar la función a var – Pascalius