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?


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");

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.


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`);

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.


@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.


6

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

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

3

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(" ")


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.


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


-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");

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.