Jak mogę dodać zmienną do console.log?

82

Robię prostą grę w JavaScript, ale w historii potrzebuję, aby podać imiona graczy. więc do tej pory mam:

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

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

jak mam zrobić drugą linię? albo jest inny sposób, w jaki mógłbym to zrobić. Czy można mieć console.log();w konsoli linię 2 na 1?

Bradley McInerney
źródło
Czy chcesz po prostu połączyć ze sobą ciągi znaków? Co masz na myśli, mówiąc „wykonaj drugą linię”?
cogsmos
^ cogsmos, to nie ma znaczenia teraz, na moje pytanie udzielono odpowiedzi
Bradley McInerney
Cieszę się, że to rozgryzłeś. W JavaScript znak + może być używany do arytmetyki, a także do łączenia dwóch ciągów znaków (nazywanych również konkatenacją). Spójrz tutaj, aby uzyskać więcej informacji: w3schools.com/js/js_operators.asp
cogsmos

Odpowiedzi:

87

Następnie użyj, +aby połączyć ciągi:

console.log("story " + name + " story");
Józefa
źródło
77

console.log przyjmuje wiele argumentów, więc po prostu użyj:

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

Jeśli nazwa to objectlub a, arrayto użycie wielu argumentów jest lepsze niż konkatenacja. Jeśli łączysz objectlub arrayw łańcuch, po prostu rejestrujesz typ, a nie zawartość zmiennej.

Ale jeśli nazwa jest tylko typem pierwotnym, wiele argumentów działa tak samo jak konkatenacja.

Coin_op
źródło
19
lub teżconsole.log('story %s story',name);
Muhammad Umer
1
Drobna sprawa, ale jeśli jesteś w mniej konwencjonalnym ustawieniu, takim jak kod chmury Parse, wysyłanie tablicy lub używanie% s nie działa ... więc jesteś zmuszony do konkatenacji.
Derek Lucas
To świetnie @MuhammadUmer, myślałem, że to tylko kwestia Pythona. W Pythonie %sjest to najlepsza metoda łączenia łańcuchów, ponieważ nie trzeba najpierw zmieniać typu zmiennej. Zastanawiam się, czy tak samo jest w JS?
JasTonAChair
61

Możesz użyć innej metody konsoli:

let name = prompt("what is your name?");
console.log(`story ${name} story`);
Sanjib Debnath
źródło
4
Ciągi szablonów są niesamowite. Ale pod warunkiem, że ktoś używa ES6. Ponieważ w przykładzie użyto "var" (może to być oczywiście ES6), ale nie sądzę, możemy założyć, że tutaj ...
therebelcoder
39

Istnieje kilka sposobów pocieszenia zmiennej w ciągu.

Metoda 1:

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

Korzyści: jeśli nazwa jest obiektem JSON, nie zostanie wydrukowana jako "story" [object Object] "story"

Metoda 2:

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

Metoda 3: W przypadku korzystania z ES6, jak wspomniano powyżej

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

Korzyści: nie ma potrzeby dodatkowego lub +

Metoda 4:

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

Korzyści: ciąg staje się bardziej czytelny.

mannutech
źródło
@egemen, co ma z tym wspólnego freemarker? To dosłowny szablon ECMAscript 2015
Nico Van Belle
1
To najlepsza odpowiedź.
Stephen Collins
19

Korzystając z ES6, możesz również zrobić to:

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

Uwaga: Aby to zrobić, musisz użyć znaku odwrotnego „zamiast„ ”lub„.

EinArzt
źródło
6

Możesz przekazać wiele argumentów do logowania:

console.log("story", name, "story");
Lyn Headley
źródło
3

%jdziała tylko dla Node.js. %jkonwertuje wartość na ciąg JSON i wstawia ją.

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

Więcej podstawień ciągów tutaj:

Dokumenty:

Gianfranco P.
źródło
2

To zależy od tego, czego chcesz.

console.log("story "+name+" story") będzie łączyć ciągi razem i wydrukować. Dla mnie używam tego, ponieważ łatwiej jest zobaczyć, co się dzieje.

Używanie console.log("story",name,"story")jest podobne do konkatenacji, jednak wydaje się, że działa mniej więcej tak:

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

To spychanie razem wszystkich elementów tablicy, oddzielonych spacją: .join(" ")

hmit
źródło
1

Obydwa console.log("story" + name + "story")i console.log("story", name, "story")działają dobrze, jak wspomniano we wcześniejszych odpowiedziach.

Nadal będę sugerował posiadanie nawyku console.log("story", name, "story"), ponieważ jeśli spróbujesz wydrukować zawartość obiektu, jak obiekt json, "story" + objectVariable + "story"zamieni ją na łańcuch.

Będzie to miało wyjścia jak: "story" [object Object] "story".

Po prostu dobra praktyka.

Sagar Kulkarni
źródło
Więc dlaczego sugerujesz "," jeden. Ponieważ po prostu wypisze [obiekt obiektu]. Zwykle zależy nam na wersji string, która otrzyma frmo "+". Dobrze?
P Satish Patro
0

Możesz także użyć stylu printf dla argumentów formatujących. Jest dostępny przynajmniej w Chrome, Firefox / Firebug i node.js.

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

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

Obsługuje również% d do formatowania liczb

Ben Anderson
źródło
-2

Możesz użyć odwrotnego ukośnika, aby zawrzeć zarówno historię, jak i nazwisko gracza w jednej linii.

var name = prompt ("jak masz na imię?"); console.log ("historia" \ nazwa \ "historia");

kimxons
źródło