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?


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

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.


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

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.


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


6

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

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

3

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


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.


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


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.