Перейти к содержимому
Теория · Первая программа · урок 1 из 7

Первая программа на JavaScript

Чему вы научитесь

Чему вы научитесь:

  • запускать программу на JavaScript в Node.js и печатать значения через console.log;
  • отличать синтаксическую ошибку от ошибки выполнения по сообщению Node.js;
  • объявлять функцию с параметрами и возвращать из неё значение через return;
  • предсказывать, что напечатает вызов функции внутри другого вызова.
Карточка рецепта hello.js входит в машину node, и из неё выходит лента с шагами в том же порядке

Программа похожа на рецепт. В рецепте шаги записаны по порядку, и повар выполняет их один за другим, сверху вниз. Компьютер выполняет программу так же: шаг за шагом.

Но повар может догадаться, что имел в виду автор рецепта, а компьютер — нет. Он делает ровно то, что написано.

Программа на JavaScript — это текстовый файл с командами, которые выполняются по очереди. Вот программа из одной строки, которая печатает приветствие:

JavaScript
console.log("Hello, world"); // Hello, world

Давайте разберём эту строку по частям:

  1. Запись console.log(...) печатает то, что стоит в скобках.
  2. В скобках стоит текст в двойных кавычках. Он печатается как есть, без кавычек.
  3. Точка с запятой в конце завершает команду.

Где работает JavaScript

JavaScript появился как язык для веб-страниц, и его умеет выполнять каждый браузер. Node.js — программа, которая выполняет JavaScript вне браузера, прямо на компьютере. В нашей картинке Node.js — повар, который читает рецепт и готовит по нему.

Браузер и Node.js — две среды выполнения: язык в них один, а набор встроенных возможностей разный. Например, в браузере есть страница, которую видит пользователь, а в Node.js её нет.

Задачи курса проверяются в браузере, а примеры из уроков удобно запускать в Node.js. Ссылки на установщик Node.js собраны в блоке «Подготовка компьютера» на странице курса.

Запуск файла

Чтобы запустить программу, сделайте три шага:

  1. Сохраните программу в файл с расширением .js, например hello.js.
  2. Откройте в папке с файлом окно для текстовых команд — терминал.
  3. Наберите node hello.js.

Node.js прочитает файл, выполнит его и напечатает Hello, world в том же окне.

Инструкции

Строка console.log("Hello, world"); — это инструкция: одна команда, которая заканчивается точкой с запятой. Инструкции пишут по одной на строке, и выполняются они сверху вниз, как шаги рецепта.

На собеседовании любят спросить, обязательна ли точка с запятой. Нет: JavaScript часто сам подставляет её в конце строки, если её забыли. Правила этой подстановки запутанные, поэтому в курсе точка с запятой стоит после каждой инструкции.

Что печатает console.log

Если в скобках console.log стоят несколько значений через запятую, они печатаются через пробел. Давайте посмотрим на три строки:

JavaScript
console.log("one", "two"); // one two
console.log(2 + 3); // 5
console.log("2 + 3"); // 2 + 3
  1. Первая строка печатает два слова через пробел и без кавычек.
  2. Во второй строке 2 + 3 стоит без кавычек. Это вычисление, и печатается его результат.
  3. В третьей строке те же символы взяты в кавычки. Это текст, и он печатается без изменений.

Кавычки решают, что видит JavaScript: текст, который нужно напечатать как есть, или код, который нужно выполнить.

Комментарии

Текст от // до конца строки — комментарий, и Node.js его пропускает. В примерах курса комментарий в конце строки показывает, что эта строка печатает. Знак ✗ в комментарии отмечает строку с ошибкой.

Частая ошибка

Текст забыли взять в кавычки:

JavaScript
console.log(Hello); // ✗
TEXT
ReferenceError: Hello is not defined

Без кавычек JavaScript считает Hello именем. Имя — слово без кавычек, которое что-то обозначает: одни имена, как console, JavaScript знает заранее, другие программа должна сначала создать сама. Программа нигде не задаёт, что значит имя Hello, поэтому она останавливается с ошибкой.

Здесь картинка с рецептом перестаёт работать. Повар догадался бы, что автор забыл кавычки, а JavaScript текст программы за автора не исправляет.

Такой текст ошибки печатают Node.js, Chrome и Firefox, а Safari формулирует его иначе. Исправление — взять текст в кавычки: console.log("Hello");.

Главное

  • Программа на JavaScript — текстовый файл с инструкциями, которые выполняются сверху вниз.
  • Браузер и Node.js — две среды выполнения; файл запускают командой node hello.js.
  • console.log печатает значения из скобок через пробел, а текст в кавычках — как есть.
  • Слово без кавычек JavaScript читает как имя, и незнакомое имя останавливает программу с ошибкой.