programar para log comandos chrome javascript node.js string-concatenation pretty-print

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] :

http://jsfiddle.net/Ze32g/

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))