Wie kann ich eine Variable zu console.log hinzufügen?

81

Ich mache ein einfaches Spiel in JavaScript, aber in der Geschichte muss es den Namen des Spielers enthalten. Was ich bisher habe, ist:

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

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

Wie mache ich die zweite Zeile? oder es gibt einen anderen Weg, wie ich das tun könnte. Ist es möglich, 2 console.log();in 1 Zeile in der Konsole zu haben?

Bradley McInerney
quelle
Möchten Sie nur Zeichenfolgen miteinander verketten? Was meinst du mit "mach die zweite Zeile"?
Cogsmos
^ cogsmos, es ist jetzt egal, meine Frage wurde beantwortet
Bradley McInerney
Ich bin froh, dass du es herausgefunden hast. In JavaScript kann das + sowohl zum Rechnen als auch zum Zusammenfügen von zwei Zeichenfolgen verwendet werden (auch als Verkettung bezeichnet). Werfen
cogsmos

Antworten:

84

Verwenden Sie dann +, um Zeichenfolgen zu kombinieren:

console.log("story " + name + " story");
Joseph
quelle
75

console.log nimmt mehrere Argumente an, also benutze einfach:

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

Wenn der Name ein objectoder ein ist, arrayist die Verwendung mehrerer Argumente besser als die Verkettung. Wenn Sie eine objectoder arrayeine Zeichenfolge verketten, protokollieren Sie einfach den Typ und nicht den Inhalt der Variablen.

Wenn der Name jedoch nur ein primitiver Typ ist, funktionieren mehrere Argumente genauso wie die Verkettung.

Coin_op
quelle
19
oder auchconsole.log('story %s story',name);
Muhammad Umer
1
Kleinigkeit, aber wenn Sie sich in einer weniger konventionellen Umgebung wie dem Cloud-Code von Parse befinden, der ein Array sendet oder% s verwendet, funktioniert dies nicht. Sie müssen also verketten.
Derek Lucas
Das ist großartig @MuhammadUmer, ich dachte, das wäre nur eine Python-Sache. In Python %sist dies die beste Methode zum Verketten von Zeichenfolgen, da Sie den Variablentyp nicht zuerst ändern müssen. Ich frage mich, ob es in JS dasselbe ist.
JasTonAChair
58

Sie können eine andere Konsolenmethode verwenden:

let name = prompt("what is your name?");
console.log(`story ${name} story`);
Sanjib Debnath
quelle
4
Vorlagenzeichenfolgen sind fantastisch. Vorausgesetzt, jemand verwendet ES6. Da im Beispiel "var" verwendet wird (könnte natürlich ES6 sein), aber denken Sie nicht, dass wir das hier annehmen können ...
dortbelcoder
Imho sollte dies die richtige Antwort sein.
Arnonuem
39

Es gibt verschiedene Möglichkeiten, die Variable innerhalb einer Zeichenfolge zu trösten.

Methode 1 :

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

Vorteil: Wenn der Name ein JSON-Objekt ist, wird er nicht als gedruckt "story" [object Object] "story"

Methode 2:

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

Methode 3: Bei Verwendung von ES6 wie oben erwähnt

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

Vorteil: Keine zusätzliche Notwendigkeit oder +

Methode 4:

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

Vorteil: Die Zeichenfolge wird besser lesbar.

Mannutech
quelle
@egemen was hat freemarker damit zu tun? Es ist ein ECMAscript 2015 Template Literal
Nico Van Belle
1
Dies ist die beste Antwort.
Stephen Collins
19

Bei Verwendung von ES6 können Sie außerdem Folgendes tun:

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

Hinweis: Sie müssen Backticks `` anstelle von "" oder '' verwenden, um dies so zu tun.

EinArzt
quelle
6

Sie können mehrere Argumente an das Protokoll übergeben:

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

%jfunktioniert nur für Node.js. %jkonvertiert einen Wert in eine JSON-Zeichenfolge und fügt ihn ein.

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

Weitere String-Ersetzungen hier:

Docs:

Gianfranco P.
quelle
2

Es kommt darauf an, was Sie wollen.

console.log("story "+name+" story") wird verketten die Fäden zusammen und drucken das. Für mich benutze ich das, weil es einfacher ist zu sehen, was los ist.

Die Verwendung console.log("story",name,"story")ähnelt der Verkettung, scheint jedoch ungefähr so ​​zu laufen:

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

Dadurch werden alle Elemente im Array zusammengeschoben, getrennt durch ein Leerzeichen: .join(" ")

hmit
quelle
1

Beides console.log("story" + name + "story")und console.log("story", name, "story")funktioniert einwandfrei, wie in früheren Antworten erwähnt.

Ich werde immer noch vorschlagen, die Gewohnheit zu haben console.log("story", name, "story"), denn wenn Sie versuchen, den Objektinhalt wie json object zu drucken, "story" + objectVariable + "story"wird er in einen String konvertiert.

Dies hat folgende Ausgabe : "story" [object Object] "story".

Nur eine gute Übung.

Sagar Kulkarni
quelle
Warum schlagen Sie dann "," vor? Da wird nur [Objekt Objekt] gedruckt. Meistens wollen wir eine String-Version, die von "+" kommt. Richtig?
P Satish Patro
0

Sie können auch den Formatierungsstil printf verwenden, um Argumente zu formatieren. Es ist mindestens in Chrome, Firefox / Firebug und node.js verfügbar.

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

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

Es unterstützt auch% d zum Formatieren von Zahlen

Ben Anderson
quelle
-2

Sie können den Backslash verwenden, um sowohl die Story als auch den Namen des Spielers in eine Zeile aufzunehmen.

var name = prompt ("Wie heißt du?"); console.log ("Geschichte" \ Name \ "Geschichte");

Kimxons
quelle