javascript - para - console.log jquery
Javascript console.log(objeto) vs. cadena concatenada (4)
La función console.log
''console.log'' es una función sobrecargada que acepta una lista de parámetros que son pasados por copy (string | number | boolean) o por referencia (todo lo demás).
En el caso de valores pasados por copia, el valor se imprime fundiéndolo como una cadena.
En el caso de valores pasados por referencia, el valor se imprime bastante según el navegador lo considere oportuno.
El operador +
El operador de signo más (+) está sobrecargado. Cuando ambos lados del operador son números, se devuelve la suma de los dos operadores.
Si cualquier lado del operador es una cadena, ambos lados se lanzarán como una cadena y se devolverá la concatenación de esas dos cadenas.
console.log("hmm: " + x);
es lo mismo que escribir
console.log(String("hmm: ") + String(x));
Solución
Evite la conversión implícita de cadenas cambiando el signo más (+) con una coma (,)
console.log("hmm: ", x);
Más información
Para una descripción más en profundidad de la función ''console.log'', ver:
https://developer.mozilla.org/en-US/docs/DOM/console.log
Para una descripción más en profundidad en el operador de signo más (+), ver:
http://www.w3schools.com/js/js_operators.asp
Estoy ejecutando esto en node.js:
> x = { ''foo'' : ''bar'' }
{ foo: ''bar'' }
> console.log(x)
{ foo: ''bar'' }
undefined
> console.log("hmm: " + x)
hmm: [object Object]
undefined
Lo que no entiendo es por qué console.log(x)
"imprime bastante" el objeto, mientras que la concatenación de cadenas lo "imprime feo". Y más importante aún, ¿cuál es la mejor manera de hacerlo imprimir hmm: { foo: ''bar'' }
?
El + x
coacciona al objeto x
en una cadena, que es solo [object Object]
:
La bonita impresión es un código subyacente muy agradable y probablemente muy complejo que alguien implementó como parte del objeto de la console
y el método de log
.
Prueba esto:
console.log("hmm: ", x);
Tienes múltiples opciones:
process.stdout.write(''hmm: '')
console.dir(x)
Otro...
var util = require(''util'')
process.stdout.write(''hmm: '')
console.log(util.inspect(x, true, 10, true))
Consulte los documentos de util.inspect para obtener más información.
Editar: Lo siento, mi mente pensó que leí Node.js. Esto es válido solo para Node.js. Por lo tanto, lo dejaré para cualquier Googlers.
Edit2: No estoy loco, solo necesito dormir. Escribiste Node.js. Voy a agregarlo como una etiqueta.
Use JSON.stringify
cuando imprima un objeto con una cadena añadida
console.log("Haa"+JSON.stringify(x))