我该如何将一个变量添加到console.log中?

116

我正在用JavaScript制作一个简单的游戏,但在故事中需要说出玩家的名字。所以我目前有的是:

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

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

我该如何做第二行?或者还有其他方式可以实现这个目的。在控制台中是否可能将两个console.log();放在同一行?


你只是想将字符串连接在一起吗?你说的“做第二行”是什么意思? - cogsmos
Cogsmos,现在不重要了,我的问题已经得到解答。 - Bradley McInerney
很高兴你解决了问题。在JavaScript中,+可以用于算术运算,也可以用于连接两个字符串(也称为串联)。在这里查看更多细节: http://www.w3schools.com/js/js_operators.asp - cogsmos
11个回答

129

然后使用+来组合字符串:

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

101

你可以使用另一种控制台方法:

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

6
模板字符串非常棒,但需要使用ES6。由于在例子中使用了"var"(当然也可能是ES6),但我们不能假设这一点... - therebelcoder

92

console.log 可以接受多个参数,因此只需使用:

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

如果 name 是一个 objectarray,那么使用多个参数比连接更好。如果将 objectarray 连接成字符串,则仅记录变量的类型而不是内容。

但是,如果 name 只是一个原始类型,则多个参数与连接的效果相同。


22
或者也可以 console.log('故事 %s 故事',name); - Muhammad Umer
1
虽然这只是小事,但如果你在像Parse的Cloud Code这样不太常规的环境中发送一个数组或使用%s是行不通的...所以你被迫进行连接。 - Derek Lucas
太好了@MuhammadUmer,我以为这只是Python的事情。在Python中,%s是连接字符串的最佳方法,因为您不需要先更改变量类型。我想知道JS是否也是如此? - JasTonAChair

67

有几种方法可以从字符串中提取变量。

方法1:

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

好处:如果名称是 JSON 对象,它将不会打印为 "story" [object Object] "story"

方法二:

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

方法三:使用上述提到的ES6

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

好处:无需额外的 , 或 +

方法 4:

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

好处:字符串更易读。


@egemen Freemarker 与此有什么关系?这是一个 ECMAscript 2015 模板字面量。 - Nico Van Belle
1
这是最佳答案。 - Stephen Collins

23

使用ES6时,您还可以这样做:

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

注意:您需要使用反引号 `` 而不是 "" 或 '' 来像这样执行它。


6

您可以向日志传递多个参数:

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


2
这取决于你想要什么。 console.log("story "+name+" story")会将字符串连接在一起并打印出来。对我来说,我使用这个方法是因为它更容易看出正在发生什么。
使用console.log("story",name,"story")类似于连接,但它似乎运行得像这样:
 var text = ["story", name, "story"];
 console.log(text.join(" "));

这将把数组中的所有项推在一起,用空格隔开:.join(" ")

1

如早前答案所述,console.log("story" + name + "story")console.log("story", name, "story")都可以正常工作。

我仍建议养成使用console.log("story", name, "story")的习惯,因为如果尝试打印对象内容(如json对象),使用"story" + objectVariable + "story"会将其转换为字符串。

这将输出:"story" [object Object] "story"

这只是一个好习惯。


那你为什么建议使用“,”呢?因为它只会打印[object object]。大多数情况下,我们想要从“+”获取字符串版本,对吧? - Satish Patro

0

你也可以使用printf格式的参数格式化。它至少在Chrome、Firefox/Firebug和node.js中可用。

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

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

它还支持%d用于格式化数字


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接