2012-08-27 18 views
5

In Chrome, il seguentePerché console.log (true, ' t') stampa true "t"?

console.log(true, '\t'); 

stamperà

true " " 

Perché ci sono le citazioni in giro?

(Notare che console.log(true + '', '\t') sarà solo stampare true, nello stesso modo in cui console.log('a', '\t'); sarà solo stampare a.)

+0

Per mostrare lo spazio vuoto. – asawyer

+0

Non sicuro al 100%, ma la mia ipotesi è perché \ t è un'espressione di stringa che rappresenta una scheda, chrome mostra "" così puoi distinguere che effettivamente funziona. –

+0

@asawyer: non succede per 'console.log ('a', '\ t')'! – Randomblue

risposta

11

Fondamentalmente ci sono due overload per console.log:

console.log(formatString, args) e console.log(arg1, arg2, ...).

In particolare, per the source code, se il primo parametro è una stringa, viene trattato come una stringa di formato per gli altri parametri. Altrimenti, ogni parametro viene emesso direttamente.

Così console.log(true + '', '\t') uscite 'vero' perché il primo parametro è una stringa e non c'è segnaposto per il \t e console.log(true, '\t') uscita volontà entrambi i parametri perché true non è una stringa.

+0

Risposta molto bella. Grazie per aver indicato il codice. – Randomblue

+0

Morto collegamento ...... – Rohit

2

ho deciso di giocare con essa

console.log(true, '\t'); 
true " " 

e poi ho provato il contrario

console.log(false, '\t'); 
false " " 

Non so perché, ma falsa restituisce un solo spazio, mentre vero restituisce due o_O .. . anche se \t è in principio non v'è alcun problema

console.log('\t', true); 
    true 

non fa anche m Dopo quello che succede dopo, sembra che il primo parametro se è un booleano in generale, influenzerà tutte le schede di escape dopo con le virgolette.

console.log(false, '\t', '\t'); 
false " " " " 

così è sicuramente qualcosa a che fare con la prima paramater essere un valore booleano, perché se lo provate con le stringhe, si comporta del tutto normalmente. Immagino sia una cosa strana con Google Chrome? Dovrò trovare il codice sorgente per vederlo effettivamente.

+0

Il problema 1 contro 2 spazi è probabilmente perché è una scheda e si espande per riempire il resto della colonna. – apsillers

Problemi correlati