2016-02-29 13 views
5

ESLint mi sta dicendo questo messaggio di errore all'interno del mio modulo JS: errore non-non necessari-ternario uso non necessario di espressione condizionale per l'assegnazione di defaulterrore ESLint no-non necessari-ternario

L'errore viene nel get metodo sulla dichiarazione returnreturn val ? val : defaultVal;?

import ls from 'local-storage'; 

export default { 
    get(key, defaultVal = null) { 
     var val = ls(key); 
     return val ? val : defaultVal; 
    }, 

    set(key, val) { 
     return ls(key, val); 
    }, 

    remove(key) { 
     return ls.remove(key); 
    }, 
}; 

Qualche idea perché ottengo questo messaggio di errore? Ho trovato alcune risorse sul sito web di ESLint riguardo a questo messaggio di errore here ma si applica alle espressioni booleane e non riesco a capire perché dovrebbe applicarsi al mio codice ...

risposta

20

Non è necessario un ternario quando un semplice val || defaultVal andrà bene.

+0

L'operatore ternario uno è più veloce. https://jsperf.com/default-assignment-by-uma/ –

+0

@UmakantPatil Questi non sono equivalenti. –

+0

@UmakantPatil Una volta che si fanno effettivamente fare la stessa cosa, le differenze sono (a) dipendenti dal browser e (b) entro 1-3%. È anche più breve e più chiaro; a meno che non ci si trovi in ​​un ciclo di gioco molto stretto o simile è una micro-ottimizzazione inutile. In ogni caso, la domanda iniziale riguardava l'avviso ESLint, che per impostazione predefinita contrassegna i ternari nelle assegnazioni di valori predefiniti. ¯ \ (° _o)/¯ –

Problemi correlati