¿Cómo puedo agregar una variable a console.log?

82

Estoy haciendo un juego simple en JavaScript, pero en la historia necesito que diga el nombre de los jugadores. entonces lo que tengo hasta ahora es:

var name = prompt("what is your name?");

console.log("story" name "story);

¿Cómo hago la segunda línea? o hay otra forma en que podría hacer esto. ¿Es posible tener 2 console.log();en 1 línea en la consola?

Bradley McInerney
fuente
¿Está buscando concatenar cadenas juntas? ¿Qué quieres decir con "hacer la segunda línea"?
cogsmos
^ cogsmos, no importa ahora, mi pregunta ha sido respondida
Bradley McInerney
Me alegro de que lo hayas descubierto. En JavaScript, el + se puede usar para aritmética y también para unir dos cadenas (también llamado concatenación). Eche un vistazo aquí para obtener más detalles: w3schools.com/js/js_operators.asp
cogsmos

Respuestas:

85

Luego usa +para combinar cadenas:

console.log("story " + name + " story");
Joseph
fuente
77

console.log toma múltiples argumentos, así que solo usa:

console.log("story", name, "story");

Si el nombre es un objecto un, arrayentonces usar múltiples argumentos es mejor que la concatenación. Si concatenas una objecto arrayen una cadena, simplemente registras el tipo en lugar del contenido de la variable.

Pero si el nombre es solo un tipo primitivo, entonces varios argumentos funcionan igual que la concatenación.

Coin_op
fuente
19
o tambiénconsole.log('story %s story',name);
Muhammad Umer
1
Algo menor, pero si estás en una configuración menos convencional como el código de nube de Parse, el envío de una matriz o el uso de% s no funciona ... entonces estás obligado a concatenar.
Derek Lucas
Eso es genial @MuhammadUmer, pensé que era solo una cosa de Python. En Python %ses el mejor método para concatenar cadenas, ya que no es necesario cambiar primero el tipo de variable. Me pregunto si es lo mismo en JS.
JasTonAChair
59

Puede utilizar otro método de consola:

let name = prompt("what is your name?");
console.log(`story ${name} story`);
Sanjib Debnath
fuente
4
Las cadenas de plantillas son impresionantes. Pero siempre que alguien use ES6. Dado que en el ejemplo se usa "var" (podría ser ES6 por supuesto) pero no creo que podamos asumir que aquí ...
therebelcoder
39

Hay varias formas de consolar la variable dentro de una cadena.

Método 1 :

console.log("story", name, "story");

Beneficio: si el nombre es un objeto JSON, no se imprimirá como "story" [object Object] "story"

Método 2:

console.log("story " + name + " story");

Método 3: al usar ES6 como se mencionó anteriormente

console.log(`story ${name} story`);

Beneficio: Sin necesidad de extra, o +

Método 4:

console.log('story %s story',name);

Beneficio: la cadena se vuelve más legible.

mannutech
fuente
@egemen ¿qué tiene que ver freemarker con eso? Es una plantilla literal de ECMAscript 2015
Nico Van Belle
1
Esta es la mejor respuesta.
Stephen Collins
19

Al usar ES6 también puede hacer esto:

var name = prompt("what is your name?");
console.log(`story ${name} story`);

Nota: Necesita usar comillas invertidas `en lugar de '' o '' para hacerlo así.

EinArzt
fuente
6

Puede pasar varios argumentos para registrar:

console.log("story", name, "story");
Lyn Headley
fuente
3

%jfunciona solo para Node.js. %jconvierte un valor en una cadena JSON y lo inserta.

console.log('%j new messages for', 7, 'john')
// 7 new messages for john

Más sustituciones de cadenas aquí:

Documentos:

Gianfranco P.
fuente
2

Depende de lo que quieras.

console.log("story "+name+" story") se concatenar las cadenas juntas e imprimir eso. Para mí, utilizo esto porque es más fácil ver lo que está sucediendo.

El uso console.log("story",name,"story")es similar a la concatenación, sin embargo, parece ejecutar algo como esto:

 var text = ["story", name, "story"];
 console.log(text.join(" "));

Esto es juntar todos los elementos de la matriz, separados por un espacio: .join(" ")

hmit
fuente
1

Ambos console.log("story" + name + "story")y console.log("story", name, "story")funcionan bien como se mencionó en respuestas anteriores.

Todavía sugeriré tener el hábito de console.log("story", name, "story"), porque, si intenta imprimir el contenido del objeto, como el objeto json, "story" + objectVariable + "story"lo convertirá en una cadena.

Esto tendrá una salida como: "story" [object Object] "story".

Solo una buena práctica.

Sagar Kulkarni
fuente
Entonces, ¿por qué sugieres "," uno. Como solo imprimirá [objeto objeto]. Sobre todo, queremos una versión de cadena que obtendrá frmo "+". ¿Derecho?
P Satish Patro
0

También puede usar el estilo printf para formatear argumentos. Está disponible en al menos Chrome, Firefox / Firebug y node.js.

var name = prompt("what is your name?");

console.log("story %s story", name);

También es compatible con% d para formatear números.

Ben Anderson
fuente
-2

Puede usar la barra invertida para incluir tanto la historia como el nombre de los jugadores en una línea.

var name = prompt ("¿cuál es tu nombre?"); console.log ("historia" \ nombre \ "historia");

kimxons
fuente