Bradley McInerney
Bradley McInerney

Reputation: 1451

How can I add a variable to console.log?

I'm making a simple game in JavaScript but in the story I need it to say the players name. so what I have so far is:

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

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

how do I do the second line? or there is another way I could do this. Is it possible to have 2 console.log(); on 1 line in the console?

Upvotes: 123

Views: 385995

Answers (11)

Sanjib Debnath
Sanjib Debnath

Reputation: 3785

You can use another console method:

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

Upvotes: 109

Joseph
Joseph

Reputation: 119837

Then use + to combine strings:

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

Upvotes: 134

Ben Anderson
Ben Anderson

Reputation: 7343

You can also use printf style of formatting arguments. It is available in at least Chrome, Firefox/Firebug and node.js.

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

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

It also supports %d for formatting numbers

Upvotes: 0

kimxons
kimxons

Reputation: 1

You can use the backslash to include both the story and the players name in one line.

var name=prompt("what is your name?"); console.log("story"\name\"story");

Upvotes: -4

mannutech
mannutech

Reputation: 1022

There are several ways of consoling out the variable within a string.

Method 1 :

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

Benefit : if name is a JSON object, it will not be printed as "story" [object Object] "story"

Method 2 :

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

Method 3: When using ES6 as mentioned above

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

Benefit: No need of extra , or +

Method 4:

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

Benefit: the string becomes more readable.

Upvotes: 75

EinArzt
EinArzt

Reputation: 367

When using ES6 you can also do this:

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

Note: You need to use backticks `` instead of "" or '' to do it like this.

Upvotes: 24

Sagar Kulkarni
Sagar Kulkarni

Reputation: 2081

Both console.log("story" + name + "story") and console.log("story", name, "story") works just fine as mentioned in earlier answers.

I will still suggest of having a habit of console.log("story", name, "story"), because, if trying to print the object contents, like json object, having "story" + objectVariable + "story" will convert it into string.

This will have output like : "story" [object Object] "story".

Just a good practice.

Upvotes: 1

hmit
hmit

Reputation: 152

It depends on what you want.

console.log("story "+name+" story") will concatenate the strings together and print that. For me, I use this because it is easier to see what is going on.

Using console.log("story",name,"story") is similar to concatenation however, it seems to run something like this:

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

This is pushing all of the items in the array together, separated by a space: .join(" ")

Upvotes: 2

Coin_op
Coin_op

Reputation: 10718

console.log takes multiple arguments, so just use:

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

If name is an object or an array then using multiple arguments is better than concatenation. If you concatenate an object or array into a string you simply log the type rather than the content of the variable.

But if name is just a primitive type then multiple arguments works the same as concatenation.

Upvotes: 93

Lyn Headley
Lyn Headley

Reputation: 11588

You can pass multiple args to log:

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

Upvotes: 6

Related Questions