¿Diferencia entre "process.stdout.write" y "console.log" en node.js?
¿Cuál es la diferencia entre "process.stdout.write" y "console.log" en node.js?
EDITAR: El uso de console.log para una variable mostró muchos caracteres ilegibles, mientras que el uso de process.stdout.write mostró un objeto.
¿Porqué es eso?
console.log()
llamadas process.stdout.write
con salida formateada. Consulte format()
en console.js la implementación.
Actualmente (v0.10.ish):
Console.prototype.log = function() {
this._stdout.write(util.format.apply(this, arguments) + '\n');
};
Al mirar los documentos de Node, aparentemente console.log es solo process.stdout.write con un salto de línea al final:
console.log = function (d) {
process.stdout.write(d + '\n');
};
Fuente: http://nodejs.org/docs/v0.3.1/api/process.html#process.stdout
Sé que esta es una pregunta muy antigua, pero no vi a nadie hablando sobre la diferencia principal entre process.stdout.write
y console.log
y solo quiero mencionarla.
Como señalaron Mauvis Leford y TK-421console.log
, agrega un line-break
carácter al final de la línea ( \n
), pero eso no es todo lo que hace.
El código no ha cambiado desde al menos 0.10.X
la versión y ahora tenemos una 5.X
versión.
Aquí está el código:
Console.prototype.log = function() {
this._stdout.write(util.format.apply(this, arguments) + '\n');
};
Como puedes ver, hay una parte que dice .apply(this, arguments)
y eso marca una gran diferencia en cuanto a funcionalidad. Es más fácil explicar eso con ejemplos:
process.stdout.write
tiene una funcionalidad muy básica, puedes escribir algo allí, como esto:
process.stdout.write("Hello World\n");
Si no colocas la línea de salto al final, obtendrás un carácter extraño después de la cadena, algo como esto:
process.stdout.write("Hello World"); //Hello World%
(Creo que eso significa algo así como "el final del programa", por lo que lo verás solo si lo usaste process.stdout.write
al final de tu archivo y no agregaste la línea de salto)
Por otro lado, console.log
podemos hacer más.
Puedes usarlo de la misma manera.
console.log("Hello World"); //You don't need the break line here because it was already formated
y también ese personaje raro desaparecióPuedes escribir más de una cadena.
console.log("Hello", "World");
Puedes hacer asociaciones
console.log("Hello %s", "World") //Useful when "World" is inside a variable
Y eso es todo, esa funcionalidad adicional se brinda gracias a la util.format.apply
pieza (podría hablar mucho sobre qué hace exactamente esto, pero entiendes mi punto, puedes leer más aquí ).
Espero que alguien encuentre útil esta información.