2012-08-27 20 views
5

En Chrome, el siguiente¿Por qué console.log (true, ' t') imprime true "t"?

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

imprimirá

true " " 

¿Por qué hay Cotizaciones dando vueltas?

(Tenga en cuenta que sólo se imprimirá console.log(true + '', '\t')true, de la misma manera que console.log('a', '\t'); sólo se imprimirá a.)

+0

Para mostrar el espacio en blanco. – asawyer

+0

No estoy 100% seguro, pero mi suposición es porque \ t es una expresión de cadena que representa una pestaña, Chrome muestra "" para que pueda distinguir que realmente está funcionando. –

+0

@asawyer: No ocurre para 'console.log ('a', '\ t')'! – Randomblue

Respuesta

11

Básicamente hay dos sobrecargas a CONSOLE.LOG:

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

Más específicamente, por the source code, si el primer parámetro es una cadena, entonces lo trata como una cadena de formato para los demás parámetros. De lo contrario, cada parámetro se envía directamente.

Así console.log(true + '', '\t') salidas 'verdadera' debido a que el primer parámetro es una cadena y no hay ningún marcador de posición para el \t y console.log(true, '\t') salida será porque ambos parámetros true no es una cadena.

+0

Muy buena respuesta. Gracias por señalar el código. – Randomblue

+0

Enlace muerto ...... – Rohit

2

decidí jugar un rato con él

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

y luego me trataron lo contrario

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

No sé por qué, pero falsa devuelve sólo un espacio, mientras que la verdadera devuelve dos o_O .. . también si es \t en el principio no hay ningún problema

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

tampoco hace m Después de esto, parece que el primer parámetro si es un booleano en general, influirá en todas las pestañas escapadas después con comillas.

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

por lo que definitivamente tiene algo que ver con el primer parámetro de ser un valor lógico ya que si lo pruebas con cuerdas, se comporta con total normalidad. ¿Supongo que es algo raro con Google Chrome? Necesitaré encontrar el código fuente para verlo realmente.

+0

El problema de 1 frente a 2 espacios es posiblemente porque es una pestaña y se expande para completar el resto de la columna de la pestaña. – apsillers

Cuestiones relacionadas