2016-01-28 8 views
6

Ho il seguente codice in JavaScript:JSLint mette in guardia circa operatore ternario

var a = num ? 5 : "five"; 

codice sembra essere praticabile. Ma JSLint avverte come questo:

#2 Expected '?' at column 9, not column 15. 
var a = h ? 5 : "qwerty"; // Line 10, Pos 15 
#3 Expected ':' at column 9, not column 19. 
var a = h ? 5 : "qwerty"; // Line 10, Pos 19 

Allora qual è il problema? Come disabilitare tali avvisi?

+2

La rientranza è corretta? Trovato in linea: '" Con JSLint otterrai un errore "Atteso {a}" alla colonna {b}, non alla colonna {c} "ogni volta che viene trovata una larghezza di indentazione errata." ' – IrkenInvader

+0

Sembra che dovresti mettere più codice qui, al momento, il tuo '?' è nella colonna '11'. –

+0

Quando lo metto all'inizio della riga: # 2 Non dichiarato 'h'. var a = h? 5: "qwerty"; // Linea 4, Pos 9 # 3 Previsto '?' nella colonna 5, non nella colonna 11. var a = h? 5: "qwerty"; // Line 4, Pos 11 L'indentazione è 1: 1 come nella domanda. – user3324314

risposta

10

sua opinione è che:

L'operatore ternario può essere visivamente confusione, quindi ? punto interrogativo e : colon iniziare sempre una linea e aumentare il rientro da 4 spazi.

 
var a = h 
    ? 5 
    : "qwerty"; 

Per fissare né rispettano la regola o il segno di spunta disordinato spazi.

+0

Puoi aggiungere un esempio? Cancellerò la mia risposta se così ... senza senso avere entrambi. –

+0

@JamesThorpe Sono andato avanti e ho aggiunto il tuo esempio a questa risposta ... Suppongo che potresti averlo anche tu, spero che non sia troppo invasivo. Aiuta a spiegare che cosa richiedono le istruzioni JSLint. – ruffin

+0

@ruffin Bene da parte mia, anche se personalmente non mi piace fare questo tipo di modifiche quando il post non è CW :) –