Ввод и вывод данных в JavaScript (Node.js): подробное руководство
Введение: Зачем нужен ввод и вывод данных?
Представь, что ты — кассир в кафе. Чтобы принять заказ, тебе нужно:
- Ввести данные от клиента (его имя, что он хочет заказать).
- Вывести результат (сказать итоговую сумму или выдать чек).
Точно так же работают компьютерные программы. Они получают информацию от пользователя (ввод), обрабатывают её, а затем показывают результат (вывод).
В этом разделе мы научимся делать две главные вещи в JavaScript (Node.js):
- Спрашивать что-то у пользователя и запоминать его ответ.
- Показывать ответ или результат вычислений на экране.
Основной синтаксис: Как это работает?
1. Вывод данных (показываем результат)
Чтобы вывести текст или число на экран, используется команда console.log(). В скобках пишем то, что хотим показать.
// Пример 1: Просто текст
console.log("Привет, мир!");
// На экране появится: Привет, мир!
// Пример 2: Число
console.log(42);
// На экране появится: 42
// Пример 3: Результат вычисления
console.log(5 + 3);
// На экране появится: 8
2. Ввод данных (получаем ответ от пользователя)
В консоли (терминале) мы не можем просто так взять и спросить пользователя. Для этого нужна специальная подготовка. Мы будем использовать встроенный модуль readline.
Сначала мы создаем "интерфейс" для общения:
// Подключаем модуль readline
const readline = require('readline');
// Создаем интерфейс для ввода и вывода
const rl = readline.createInterface({
input: process.stdin, // Откуда читаем (клавиатура)
output: process.stdout // Куда пишем (экран)
});
Теперь, чтобы задать вопрос и получить ответ, мы используем rl.question():
// Задаем вопрос
rl.question('Как тебя зовут? ', (answer) => {
// Когда пользователь введет ответ, он попадет в переменную answer
console.log('Привет, ' + answer + '!');
// Важно! Закрываем интерфейс, чтобы программа завершилась
rl.close();
});
Разбор типичных задач
Задача 1: "Площадь прямоугольника"
Условие: Нужно спросить у пользователя длину и ширину, а потом вывести площадь.
Решение:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// Спрашиваем длину
rl.question('Введите длину: ', (length) => {
// Спрашиваем ширину (внутри первого вопроса!)
rl.question('Введите ширину: ', (width) => {
// Вычисляем площадь (не забываем превратить текст в число с помощью Number)
let area = Number(length) * Number(width);
console.log('Площадь прямоугольника: ' + area);
rl.close();
});
});
Задача 2: "Определение возраста"
Условие: Есть год рождения и текущий год. Найти возраст.
Решение:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Введите год рождения: ', (birthYear) => {
rl.question('Введите текущий год: ', (currentYear) => {
let age = Number(currentYear) - Number(birthYear);
console.log('Вам ' + age + ' лет.');
rl.close();
});
});
Частые ошибки новичков
- Забыть закрыть интерфейс: Если не написать
rl.close(), программа "зависнет" и не завершится. - Складывать строки вместо чисел: Если написать
"5" + "3", получится"53", а не8. Всегда превращайте ввод в число с помощьюNumber(). - Путать порядок вопросов: Второй вопрос всегда пишется внутри первого, иначе программа спросит всё сразу, не дождавшись ответа.
- Опечатки в названии переменной: Если вы спросили
answer, а написалиanser, программа выдаст ошибку.
Итоговый пример: "Уютное кафе"
Давай решим задачу, похожую на те, что будут в конце раздела. Напишем программу, которая принимает заказ в кафе.
Задача: Спросить имя клиента, название напитка и размер порции (маленький/большой). Вывести итоговое сообщение: "Заказ для [имя]: [размер] [напиток]".
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// Спрашиваем имя
rl.question('Как вас зовут? ', (name) => {
// Спрашиваем напиток
rl.question('Какой напиток желаете? (кофе, чай, какао) ', (drink) => {
// Спрашиваем размер
rl.question('Какой размер? (маленький/большой) ', (size) => {
// Выводим итог
console.log('Заказ для ' + name + ': ' + size + ' ' + drink);
rl.close();
});
});
});
Попробуй запустить этот код в Node.js. Ты увидишь, как программа по очереди задает вопросы и в конце печатает готовый заказ. Это и есть основа любого взаимодействия с пользователем!