问题
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?
回答1:
Then use +
to combine strings:
console.log("story " + name + " story");
回答2:
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.
回答3:
You can use another console method:
var name = prompt("what is your name?");
console.log(`story ${name} story`);
回答4:
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.
回答5:
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.
回答6:
You can pass multiple args to log:
console.log("story", name, "story");
回答7:
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(" ")
回答8:
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.
回答9:
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
回答10:
%j
works for only Node.js. %j
converts a value to a JSON string and inserts it.
console.log('%j new messages for', 7, 'john')
// 7 new messages for john
More string substitutions here:
- https://exploringjs.com/impatient-js/ch_console.html
Docs:
- Chrome: https://developers.google.com/web/tools/chrome-devtools/console/console-write#string_substitution_and_formatting
- Firefox: https://developer.mozilla.org/en-US/docs/Web/API/Console#Using_string_substitutions
- IE: https://docs.microsoft.com/en-gb/visualstudio/debugger/javascript-console-commands?view=vs-2019#ConsoleLog
- Node.js: https://docs.microsoft.com/en-gb/visualstudio/debugger/javascript-console-commands?view=vs-2019#ConsoleLog
- Spec: https://console.spec.whatwg.org/#formatter
回答11:
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");
来源:https://stackoverflow.com/questions/16600925/how-can-i-add-a-variable-to-console-log