2012-03-02 12 views
31

Estoy totalmente bien con este error JSLint. ¿Cómo puedo tolerarlo? ¿Hay una bandera o casilla de verificación para ello?Se esperaba una asignación o llamada de función y en su lugar vi una expresión

usted lo consigue cuando haces cosas como:

v && arr.push(v); 

en oposición a:

if (v) { 
    arr.push(v); 
} 

Ambos hacen exactamente lo mismo. Si pones:

window.test = function(v) { 
    'use strict'; 
    var arr = []; 
    if (v) { 
     arr.push(v); 
    } 
    return arr; 
}; 

en el minifier que le resta a esto de todos modos:

window.test=function(a){var b=[];a&&b.push(a);return b}; 

Respuesta

73

no creo JSLint tiene una opción para desactivarlo.

JSHint (un tenedor con más opciones) tiene una opción: la opción expr, documentada como "si ExpressionStatement debe permitirse como programas".

+0

+1 Gracias por el sitio web :) – diEcho

+0

@diEcho: También puede descargarlo y usarlo localmente (eso es lo que hago). Lo ejecuto a través de NodeJS con mis opciones preferidas establecidas, * dramáticamente * ayuda a mi confianza en el código correcto. :-) –

+8

http://www.jshint.com/docs/options/#expr para ahorrar tiempo alguien en el futuro –

9

No hay opción para esto en JSLint. Puede evitarlo usando:

var dummy = v && arr.push(v); 

NB: dummy evalúa a true después de eso.

Otra solución podría ser:

function expression(statement) { 
'use strict'; 
return statement; 
} 
expression(v && arr.push); 
+6

Funcionará, pero es una tontería. El minificador realmente resolverá eso y, para su legibilidad, sería mejor usar la declaración 'if' que esa IMO. – ryanve

+0

Eso es verdad. Pero usted pidió una forma de tolerarlo. Se agregó otra solución. Es como Crockford dijo en alguna parte: * JSLint está diseñado para ser un dolor en el culo para los programadores *; ~) MAL – KooiInc

+0

el maravilloso truco && no funciona en JSLint ... tal vez depende de la versión ... – faeb187

30

Usted puede añadir la siguiente línea de hacer caso omiso de esa advertencia:

/* * jshint -W030/

Puede leer más al respecto here.

+3

La respuesta no tiene relación alguna a la pregunta, que era sobre JSLint, no JSHint. –

+13

Sin embargo, sigue siendo la respuesta más útil para la mayoría de las personas que aterrizan aquí. –

+2

"completamente sin relación"? ¿Porque JSHint no tiene relación alguna con JSLint? – iconoclast

Cuestiones relacionadas