Як я можу додати змінну до console.log?


82

Я роблю просту гру на JavaScript, але в сюжеті мені потрібна вона, щоб назвати гравців. отже, що я маю дотепер:

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

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

як зробити другий рядок? або є інший спосіб, як я міг це зробити. Чи можна мати 2 console.log();на 1 рядок у консолі?


Ви просто хочете об'єднати рядки разом? Що ви маєте на увазі під "робити другий рядок"?
cogsmos

^ cogsmos, це зараз не має значення, на моє запитання відповіли
Бредлі Макіннер

Радий, що ти це зрозумів. У JavaScript знак + може використовуватися для арифметики, а також для об'єднання двох рядків (також званий конкатенацією). Подивіться тут, щоб отримати докладнішу інформацію: w3schools.com/js/js_operators.asp
cogsmos

Відповіді:


87

Потім використовуйте, +щоб об’єднати рядки:

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

77

console.log приймає кілька аргументів, тому просто використовуйте:

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

Якщо ім’я - це objectабо, arrayтоді використання кількох аргументів краще, ніж об’єднання. Якщо ви об'єднуєте рядок objectабо arrayв рядок, ви просто реєструєте тип, а не вміст змінної.

Але якщо ім'я - це просто примітивний тип, то декілька аргументів працюють так само, як об'єднання.


19
або такожconsole.log('story %s story',name);
Мухаммед Умер

1
Незначна річ, але якщо ви знаходитесь у менш звичній обстановці, як хмарний код Parse, надсилання масиву або використання% s не працює .. тому ви змушені об’єднуватися.
Дерек Лукас

Це чудово @MuhammadUmer, я думав, що це лише річ Python. У Python %sнайкращий метод об’єднання рядків, оскільки вам не потрібно спочатку змінювати тип змінної. Цікаво, чи те саме в JS?
JasTonAChair

61

Ви можете використовувати інший консольний метод:

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

4
Рядки шаблонів - чудові. Але за умови, що хтось використовує ES6. Оскільки в прикладі використовується "var" (може бути ES6 звичайно), але не думайте, що ми можемо припустити, що тут ...
therebelcoder

39

Існує кілька способів заспокоєння змінної всередині рядка.

Спосіб 1:

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

Перевага: якщо ім'я є об'єктом JSON, воно не буде надруковано як "story" [object Object] "story"

Спосіб 2:

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

Спосіб 3: При використанні ES6, як зазначено вище

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

Перевага: Не потрібно додатково або +

Спосіб 4:

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

Перевага: рядок стає більш читабельним.


@egemen, що спільного з цим має фрімаркер? Це буквальний шаблон ECMAscript 2015
Ніко Ван Белль

1
Це найкраща відповідь.
Стівен Коллінз

19

Використовуючи ES6, ви також можете зробити це:

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

Примітка: Вам потрібно використовувати зворотні позначки `` замість "" або ``, щоб зробити це так.


6

Ви можете передати кілька аргументів для реєстрації:

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

3

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

Просто хороша практика.


Тоді чому ви пропонуєте "," один. Як це буде просто надрукувати [об'єкт об'єкта]. Здебільшого ми хочемо рядкову версію, яка отримає frmo "+". Правда?
P

0

Ви також можете використовувати стиль printf форматування аргументів. Він доступний принаймні в Chrome, Firefox / Firebug та node.js.

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

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

Він також підтримує% d для форматування чисел


-2

Ви можете використовувати зворотну скісну риску, щоб включити в один рядок історію та ім’я гравців.

var name = prompt ("як вас звати?"); console.log ("історія" \ назва \ "історія");

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.