Как написать скрипт на javascript

  • Назад
  • Обзор: Getting started with the web
  • Далее

JavaScript – это язык программирования, который добавляет интерактивность на ваш веб-сайт (например: игры, отклик при нажатии кнопок или при вводе данных в формы, динамические стили, анимация). Эта статья поможет вам начать работать с этим захватывающим языком и даст вам представление о том, на что он способен.

Что такое JavaScript на самом деле?

JavaScript («JS» для краткости) — это полноценный динамический язык программирования, который применяется к HTML документу, и может обеспечить динамическую интерактивность на веб-сайтах. Его разработал Brendan Eich, сооснователь проекта Mozilla, Mozilla Foundation и Mozilla Corporation.

JavaScript невероятно универсален и дружелюбен к новичкам. Обладая большим опытом, вы сможете создавать игры, анимированную 2D и 3D графику, полномасштабные приложения с базами данных и многое другое!

JavaScript сам по себе довольно компактный, но очень гибкий. Разработчиками написано большое количество инструментов поверх основного языка JavaScript, которые разблокируют огромное количество дополнительных функций с очень небольшим усилием. К ним относятся:

  • Программные интерфейсы приложения (API), встроенные в браузеры, обеспечивающие различные функциональные возможности, такие как динамическое создание HTML и установку CSS стилей, захват и манипуляция видеопотоком, работа с веб-камерой пользователя или генерация 3D графики и аудио сэмплов.
  • Сторонние API позволяют разработчикам внедрять функциональность в свои сайты от других разработчиков, таких как Twitter или Facebook.
  • Также вы можете применить к вашему HTML сторонние фреймворки и библиотеки, что позволит вам ускорить создание сайтов и приложений.

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

Ниже мы познакомим вас с некоторыми аспектами основного языка, и вы также будете играть с несколькими функциями API браузера. Веселитесь!

Пример «hello world»

Предыдущий раздел звучит очень многообещающе, и это на самом деле так — JavaScript является одной из самых перспективных веб-технологий, и когда вы освоитесь и начнёте использовать его, ваши веб-сайты перейдут в новое измерение мощи и креативности.

Тем не менее, с JavaScript немного более сложно освоиться, чем с HTML и CSS. Вам придётся начать с малого, продолжая изучение небольшими шагами. Для начала мы покажем вам, как добавить некоторые основы JavaScript на вашу страницу, чтобы создать «hello world!» пример (стандарт в начальных примерах программирования).

Предупреждение: Важно: Если вы не следили за остальным нашим курсом, скачайте этот пример кода и используйте его в качестве стартовой точки.

  1. Для начала перейдите на ваш тестовый сайт и создайте папку с именем ‘scripts’ (без кавычек). Затем, в новой папке скриптов, которую вы только что создали, создайте новый файл с именем main.js. Сохраните его в вашей папке scripts.
  2. Далее перейдите в ваш index.html файл и введите следующий элемент на новой строке прямо перед закрывающим тегом </body>:
    <script src="scripts/main.js"></script>
    
  3. В основном этот код выполняет ту же работу, что и элемент <link> для CSS — добавляет JavaScript на страницу, позволяя ему взаимодействовать с HTML (и CSS, и чем-нибудь ещё на странице).
  4. Теперь добавьте следующий код в файл main.js:
    var myHeading = document.querySelector('h1');
    myHeading.textContent = 'Hello world!';
    
  5. Теперь убедитесь, что HTML и JavaScript файлы сохранены, и загрузите index.html в браузере. Вы должны увидеть что-то вроде этого:

Примечание: Причиной, по которой мы поставили элемент <script> в нижней части HTML файла, является то, что HTML-элементы загружаются браузером в том порядке, в котором они расположены в файле. Поэтому, если JavaScript загружается первым и ему нужно взаимодействовать с HTML ниже его, он не сможет работать, так как JavaScript будет загружен раньше, чем HTML, с которым нужно работать. Поэтому, располагать JavaScript в нижней части HTML страницы считается лучшей стратегией.

Что произошло?

Итак, ваш заголовок текста был изменён на «Hello world!» с помощью JavaScript. Мы сделали это с помощью вызова функции querySelector(), захватив ссылку на наш заголовок и сохранив её в переменной, названной myHeading. Это очень похоже на то, что мы делали в CSS с помощью селекторов. Если вы хотите что-то сделать с элементом, то для начала вам нужно его выбрать.

После этого, вы устанавливаете значение переменной myHeading в textContent свойство (которое представляет собой контент заголовка) «Hello world!».

Ускоренный курс по основам языка

Давайте познакомимся с некоторыми основными возможностями языка JavaScript, чтобы дать вам больше понимания, как это всё работает. Более того, эти возможности являются общими для всех языков программирования. Если вы сможете понять эти основы, вы будете в состоянии начать программировать, как ни в чём не бывало!

Предупреждение: Важно: В этой статье попробуйте вводить примеры строк кода в вашей JavaScript консоли, чтобы увидеть, что происходит. Для более подробной информации о JavaScript консоли смотрите статью Откройте для себя браузерные инструменты разработчика.

Переменные

Переменные — это контейнеры, внутри которых вы можете хранить значения. Вы начинаете с того, что объявляете переменную с помощью ключевого слова var (не рекомендуется, продолжайте читать, чтобы получить объяснения) или let, за которым следует любое имя, которым вы захотите её назвать:

Примечание: Точка с запятой в конце строки указывает, где заканчивается оператор. Точку с запятой нужно обязательно использовать для разеделения операторов, располагающихся на одной строке. Однако некоторые люди считают, что хорошая практика — указывать её в конце каждого оператора. Существуют и другие правила, когда нужно ставить точку с запятой, а когда нет. Смотрите более подробно в статье ваше руководство по точкам с запятой в JavaScript.

Примечание: JavaScript чувствителен к регистру — myVariable отличается от переменной myvariable. Если у вас возникают проблемы в вашем коде, проверьте регистр!

**Примечание:**Для получения более подробной информации о разнице между var и let, смотрите: Разница между var и let.

После объявления переменной вы можете присвоить ей значение:

Вы можете сделать обе эти операции на одной и той же строке, если вы захотите:

Вы можете получить значение, просто вызвав переменную по имени:

После установки значения переменной вы можете изменить его позже:

var myVariable = 'Bob';
myVariable = 'Steve';

Обратите внимание, что переменные имеют разные типы данных:

Переменная Пояснение Пример
String Последовательность текста, называемая строкой. Чтобы указать, что это значение является строкой, вы должны заключить его в кавычки. var myVariable = 'Bob';
Number Числа. Числа не имеют кавычек вокруг них. var myVariable = 10;
Boolean Значение True(Правда)/False(Ложь). Слова true и false специальные ключевые слова в JS, и не нуждаются в кавычках. var myVariable = true;
Array Массив, который позволяет хранить несколько значений в одной ссылке. var myVariable = [1,'Bob','Steve',10]; Обратиться к каждому элементу массива можно так: myVariable[0], myVariable[1], и т.д.
Object В принципе, что угодно. Все в JavaScript является объектом, и может храниться в переменной. Имейте это в виду, пока вы учитесь. var myVariable = document.querySelector('h1'); Все это из вышеприведённых примеров.

Так для чего нам нужны переменные? Что ж, переменные должны были сделать что-нибудь интересное в программировании. Если значения не могли бы изменяться, то вы не могли бы ничего сделать динамическим, например, персонализировать приветственное сообщение или сменить изображение, отображаемое в галерее изображений.

Комментарии

Комментарии — это, по сути, короткие фрагменты текста, которые могут быть добавлены в код, и которые игнорируются браузером. Вы можете поместить комментарии в JavaScript-код, так же как вы делали это в CSS:

/*
Всё, что находится тут - комментарий.
*/

Если ваш комментарий не содержит переноса строк, то зачастую легче поставить две косые черты, как тут:

Операторы

operator (en-US) — это математический символ, который производит результат, основанный на двух значениях (или переменных). В приведённой ниже таблице вы можете увидеть некоторые из наиболее простых операторов, наряду с некоторыми примерами, которые опробуете в JavaScript консоли.

Оператор Пояснение Символ(ы) Пример
Сложение (Конкатенация) Используется для сложения двух чисел или склеивания двух строк вместе. + 6 + 9; "Hello " + "world!";
Вычитание, Умножение, Деление Они делают то, чего вы от них ожидаете в математике. -, *, / 9 - 3; 8 * 2; // умножение в JS это звёздочка 9 / 3;
Присваивание Вы уже это видели: он присваивает значение переменной. = var myVariable = 'Bob';
Равенство (Тождество) Делает проверку, если увидит, что два значения равны друг другу, то возвращает результат true/false (Boolean). === var myVariable = 3; myVariable === 4;
Отрицание (Неравенство) Возвращает логически противоположное значение, которое ему предшествует; превращает true в false, и т.д. Когда используется вместе с оператором равенства, оператор отрицания проверяет, являются ли два значения не равными. !, !== Основное выражение true, но сравнение возвращает false, потому что мы отрицаем его: var myVariable = 3; !(myVariable === 3);Здесь мы проверяем «myVariable НЕ равно 3″. Это возвращает false, потому что myVariable равно 3. var myVariable = 3; myVariable !== 3;

Существует намного больше операторов для изучения, но этих пока хватит. Смотрите их полный список в разделе выражения и операторы.

Примечание: Смешивание типов данных может привести к некоторым неожиданным результатам при выполнении вычислений, поэтому будьте осторожны, правильно ссылайтесь на ваши переменные, чтобы получать ожидаемые результаты. Например, введите "35" + "25" в вашу консоль. Почему вы не получили результат, который вы ожидали? Потому, что кавычки превратили числа в строки, так что у вас в итоге получилась конкатенация строк, а не сложение чисел. Если вы введёте, 35 + 25, то получите правильный результат.

Условия

Условия — это конструкции в коде, которые позволяют проверить истинность или ложность выражения и выполнить другой код в зависимости от полученного результата. Самая распространённая форма условия — инструкция if ... else. Например:

var iceCream = 'chocolate';
if (iceCream === 'chocolate') {
  alert('Yay, I love chocolate ice cream!');
} else {
  alert('Awwww, but chocolate is my favorite...');
}

Выражение внутри if ( ... ) — это проверка, которая использует тождественный оператор (как описано выше), чтобы сравнить переменную iceCream со строкой chocolate и увидеть равны ли они. Если это сравнение возвращает true, выполнится первый блок кода. Если нет, этот код пропустится и выполнится второй блок кода, после инструкции else.

Функции

Функции — способ упаковки функциональности, которую вы хотите использовать повторно. Всякий раз, когда вам нужна определённая процедура, вы можете просто вызвать функцию по её имени, а не переписывать весь код каждый раз. Вы уже видели некоторые функции, описанные выше, например:

var myVariable = document.querySelector('h1');

Эти функции, document.querySelector и alert, встроены в браузер для того, чтобы вы использовали их всякий раз, когда вам это необходимо.

Если вы видите что-то, что выглядит как имя переменной, но имеет после него скобки — (), скорее всего, это функция. Функции часто принимают аргументы — биты данных, которые им необходимы для выполнения своей работы. Они находятся в скобках, и разделяются запятыми, если присутствует более одного аргумента.

Например, функция alert() вызывает всплывающий блок, появляющийся в окне браузера, но мы должны дать ему строку в качестве аргумента, чтобы сказать функции, что писать во всплывающем блоке.

Хорошая новость заключается в том, что вы можете определить свои собственные функции — в следующем примере мы напишем простую функцию, которая принимает два числа в качестве аргументов и умножает их:

function multiply(num1,num2) {
  var result = num1 * num2;
  return result;
}

Попробуйте запустить вышеупомянутую функцию в консоли, затем попробуйте изменить аргументы, например:

multiply(4,7);
multiply(20,20);
multiply(0.5,3);

Примечание: Инструкция return сообщает браузеру, что нужно вернуть переменную result из функции, которую можно будет использовать. Это необходимо потому, что переменные, определённые внутри функций, доступны только внутри этих функций. Это называется областью видимости (en-US) переменной. (Читайте больше об области видимости переменных.)

События

Для создания действительной интерактивности на веб-сайте вам необходимы события. События — это структура, которая следит за тем, что происходит в браузере, а затем позволяет вам запускать код в ответ на это. Наиболее очевидным является событие клика (en-US), которое вызывается браузером, когда мы щёлкаем по чему-то мышью. Для демонстрации этого события введите следующую команду в вашу консоль, а затем щёлкните по текущей веб-странице:

document.querySelector('html').onclick = function() {
    alert('Ouch! Stop poking me!');
}

Существуют множество способов прикрепить событие к элементу. Здесь мы выбираем <html> элемент и устанавливаем ему обработчик свойства onclick (en-US) анонимной функцией (т.е. безымянной) которая содержит код, который мы хотим запустить для события клика.

Обратите внимание, что

document.querySelector('html').onclick = function() {};

эквивалентно

var myHTML = document.querySelector('html');
myHTML.onclick = function() {};

Просто так короче.

Прокачаем пример нашего веб-сайта

Теперь, когда мы прошли некоторые основы JavaScript, давайте добавим несколько крутых несложных функций в пример нашего сайта, чтобы дать вам некоторое представление о принципах работы.

Добавление смены изображения

В этом разделе мы добавим ещё одно изображение на наш сайт и добавим некоторый простой JavaScript для переключения между двумя изображениями, когда по ним щёлкнули.

  1. В первую очередь найдите другое изображение, которые вы хотели бы показать на вашем сайте. Убедитесь что оно такого же размера, как ваше первое изображение или максимально близкое к нему.
  2. Сохраните изображение в вашу папку images.
  3. Переименуйте это изображение в ‘firefox2.png’ (без кавычек).
  4. Перейдите в ваш файл main.js и введите следующий JavaScript. (Если ваш «hello world» JavaScript по-прежнему существует, удалите его.)
    var myImage = document.querySelector('img');
    
    myImage.onclick = function() {
        var mySrc = myImage.getAttribute('src');
        if(mySrc === 'images/firefox-icon.png') {
          myImage.setAttribute ('src','images/firefox2.png');
        } else {
          myImage.setAttribute ('src','images/firefox-icon.png');
        }
    }
    
  5. Сохраните все файлы и загрузите index.html в браузере. Теперь, когда вы щёлкните по изображению, оно должно измениться на другое!

Итак, мы сохраняем ссылку на наш элемент <img> в переменной myImage. Далее, мы создаём этой переменной обработчик события onclick с анонимной функцией. Теперь, каждый раз, когда на этот элемент изображения щёлкнут:

  1. Мы получаем значение из атрибута src изображения.
  2. Мы используем условие для проверки значения src, равен ли путь к исходному изображению:
    1. Если это так, мы меняем значение src на путь ко 2-му изображению, заставляя другое изображение загружаться внутри элемента <image>.
    2. Если это не так (значит, оно должно было уже измениться), мы меняем значение src, возвращаясь к первоначальному пути изображения, каким он был изначально.

Добавление персонального приветственного сообщения

Далее мы добавим немного другого кода, чтобы изменить заголовок страницы на персонализированное приветственное сообщение, когда пользователь впервые зайдёт на сайт. Это приветственное сообщение будет сохраняться, когда пользователь покинет сайт, а позже вернётся — мы сохраним его с помощью Web Storage API. Мы также включим возможность изменить пользователя и, следовательно, приветственное сообщение, в любое время, когда это будет необходимо.

  1. В index.html, добавьте следующую строку перед элементом <script>:
    <button>Change user</button>
    
  2. В main.js, добавьте следующий код в конец файла, точно так, как написано — он захватит ссылки на новую кнопку и заголовок, и сохранит их в переменные:
    var myButton = document.querySelector('button');
    var myHeading = document.querySelector('h1');
    
  3. Теперь добавьте следующую функцию для установки персонализированного приветствия — она ничего не будет делать, но мы будем использовать её позже:
    function setUserName() {
      var myName = prompt('Please enter your name.');
      localStorage.setItem('name', myName);
      myHeading.textContent = 'Mozilla is cool, ' + myName;
    }
    

    Эта функция содержит функцию prompt() (en-US), которая вызывает диалоговое окно, немного похожее на alert() кроме того, что prompt() просит пользователя ввести некоторые данные, и сохраняет эти данные в переменной, после того как пользователь нажимает OK. В данном случае, мы просим пользователя ввести его имя. Далее, мы вызываем API под названием localStorage, который позволяет нам хранить данные в браузере и извлекать их позднее. Мы используем функцию setItem() из localStorage для создания и хранения данных в свойстве под названием 'name', и устанавливаем это значение в переменную myName, которая содержит имя введённое пользователем. В конце мы устанавливаем textContent заголовку в виде строки и имени пользователя.

  4. Затем добавьте блок if ... else — мы могли бы назвать это кодом инициализации, поскольку он структурирует приложение при его первой загрузке:
    if(!localStorage.getItem('name')) {
      setUserName();
    } else {
      var storedName = localStorage.getItem('name');
      myHeading.textContent = 'Mozilla is cool, ' + storedName;
    }
    

    Этот блок сначала использует оператор отрицания (логическое НЕ, представленное в виде !) чтобы проверить, существуют ли данные в пункте name. Если нет, то функция setUserName() запускается для их создания. Если данные существуют (то есть, пользователь установил его во время предыдущего посещения), мы извлекаем сохранённое имя, с помощью getItem() и устанавливаем textContent заголовку в виде строки плюс имя пользователя, так же, как мы делали внутри setUserName().

  5. Наконец, установите обработчик события onclick на кнопку. При нажатии кнопки запускается функция setUserName(). Это позволяет пользователю установить новое имя, всякий раз, когда он захочет, нажатием кнопки:
    myButton.onclick = function() {
      setUserName();
    }
    

Теперь, когда вы впервые заходите на сайт, он попросит вас указать имя пользователя, а затем предоставит вам персональное сообщение. Вы можете изменить имя в любое время, нажав на кнопку. В качестве дополнительного бонуса, поскольку имя хранится внутри localStorage, оно сохраняется после закрытия сайта, сохраняя при этом персонализированное сообщение при следующем открытии сайта!

Заключение

Если вы следовали всем инструкциям в этой статье, в конечном итоге вы должны получить страницу, которая выглядит примерно так (вы также можете посмотреть нашу версию здесь):

Если вы застряли, вы всегда можете сравнить свою работу с нашим готовым примером кода на Github.

Здесь мы узнали только самую поверхность JavaScript. Если вам понравился этот язык и вы хотите изучить его поглубже, перейдите к нашему разделу изучение JavaScript.

  • Назад
  • Обзор: Getting started with the web
  • Далее

В этом модуле

Javascript урок для начинающих. На уроке рассмотрены варианты внедрения сценариев в HTML-код. Синтаксис языка. Понятие операторов

В сети Интернет Вы найдете большое количество информации, посвященной языку JavaScript. Цель нашего портала заключается в последовательном логичном изложении кратких теоретических сведений по теме, с обязательным закреплением материала в виде практических заданий на основе решенных примеров. Представленные на сайте labs-org.ru лабораторные задания по javaScript выстроены последовательно по мере увеличения сложности, а готовые решенные примеры позволят с легкостью пройти материал даже новичку. Сайт можно использовать в качестве вспомогательного наглядного пособия для учителей и преподавателей.

1. Добавление сценариев Javascript в HTML

Javascript — скриптовый (сценарный) интерпретируемый язык программирования, интерпретатор встроен непосредственно в браузер. Поэтому обработка скрипта (или другими словами — сценария) происходит на стороне клиента без обращения к серверной стороне

Скрипты используются в html-страницах для увеличения функциональности и возможностей взаимодействия с посетителями сайта.

Для добавления сценария на страницу HTML используется дескриптор:

<script type="text/javascript">
</script>

Или сегодня можно использовать упрощенный вариант:

Атрибуты дескриптора:

  • type — атрибут, пришедший на замену language; он сообщает браузеру, какой язык используется внутри дескрипторов;
  • src — атрибут определяет URL внешнего исходного JavaScript-файла, сценарий которого прикрепляется к html-странице.

Таким образом, варианты тега script:

  1. Устаревший вариант:
  2. <sсript language="javascript">...</sсript>
  3. Действующие варианты:
  4. <script type="text/javascript">...</script>
  5. Вариант с прикрепленным файлом скрипта:
  6. <script src="/jscripts/myscript.js">
    </sсript>

Итак, кратко резюмируем то, что необходимо знать о javascript:

  • тег script обычно помещается в html-страницу в область head или body;
  • этот тег указывает на то, что внутри находится сценарий — исполняемый код, в нашем случае скрипт на языке javascript;
  • когда html-парсер браузера, отображая последовательно структуру html, доходит до тега script, то он передает инициативу интерпретатору javascript;
  • интерпретатор, в свою очередь, исполняет содержимое кода до закрывающего тега script , а затем опять передает управление html-парсеру.

Добавление javascript в html

Встраивание javascript в html происходит двумя основными способами, которые рассмотрим на примере:

Пример 1: Вывести в браузере сообщение «Это JavaScript!», используя скрипт на языке JavaScript.
добавление javascript

✍ Решение:
 

1. Встраивание JavaScript непосредственно в HTML-страницу:

  • Создайте html-страницу со следующим кодом:
  • <html><head></head>
    <body>
    <!-- Сценарий -->

    <script>
    	document.write("Это JavaScript!");
    </script>

    <!-- Конец сценария -->
    <hr>
    Это обычный HTML документ.
    </body></html>

    В данном примере дескриптор script может находиться как в теле документа, т.е. теге body (как в примере), так и в области head.

  • Откройте страницу в браузере и посмотрите на результат. Всё, что находится до горизонтальной линии — это результат работы скрипта; после чего идет текст в разметке html.

2. Размещение сценария во внешнем файле:

  • Создайте две страницы: lab1.html и myscript.js. Расположите обе страницы в одном каталоге.
  • В html-документе разместите код:
  • <html>
    <head>
    <!-- Прикрепление файла с кодом сценария -->

    <script src="myscript.js"></script>

    </head>
    <body>
    ...
    </body></html>

    При прикреплении внешнего файла со скриптом тег script следует размещать в области head.

  • В файле с расширением js (в данном конкретном примере — myscript.js) находится единственная строка — код для вывода сообщения:
  • document.write("Это JavaScript!")
  • Откройте страницу lab1.html в браузере и посмотрите результат.
  • При прикреплении js-файла следует иметь в виду, что в html-файле надо указывать относительный путь к файлу со скриптом. Так, если файл со скриптом находится в каталоге jscripts, то код будет: sсript src="jscripts/myscript.js".

  • Функция document.write() используется для вывода информации на экран.
  • Тогда как document.writeln() — используется для перевода на новую строку, если используется тег форматирования pre.
  • alert() — это метод для вывода модального (диалогового) окна с сообщением
  • Выполните следующий пример, чтобы увидеть особенности работы метода alert():

    Пример 2: Поменяйте местами alert и document.write. Посмотрите на результат в браузере.

    <script> 
      alert ("Hello?"); 	
      document.write("Hello!");
    </script>

    Важно: особенность модального окна alert() состоит в том, что пользователь не может продолжить работу, пока не щелкнет по кнопке окна

    Обратите внимание, как работает javascript, помещенный в теги оформления шрифта:

    Пример 3: Перенесите скрипт в BODY после тега H1. Посмотрите на результат.

    <h1>
    <sсript>
      alert ("Hello?"); 	
      document.write("Hello!");
    </sсript>
    </h1>

    Важно: Пример показывает, что при использовании метода write() на странице выводится не просто текст, а html-код. То есть данный код может содержать теги html, которые будут преобразованы в соответствующее форматирование текста.

    Для вывода в консоль используется метод log объекта console:

    Пример 4: Теперь давайте выведем сообщение в консоль.

    <h1>
    <sсript>
      console.log("Hello!");
    </sсript>
    </h1>

    Задание Js 1. Вывести в окно браузера следующие данные: Ваше ФИО, возраст, хобби (каждое на новой строке). Затем то же самое выведите в консоль.

    Задание Js 2. Написать сценарий (javascript) для вывода двух строк текста, красной и синей.
    вывод javascript

    Замечание:

    Теги html для оформления текста цветом:

    <font color="red">Красная строка</font>

    Задание Js 3. Найдите и исправьте ошибки во фрагментах кода:

    1. document.whrit("Проблемы?");

    Вопросы для самоконтроля:

    • Что такое сценарий (скрипт)?
    • Сформулируйте основные задачи, решаемые с помощью скриптов javaScript.
    • Опишите основные правила подключения сценариев к странице html.
    • Какой метод javaScript используется для вывода текста (html-кода) на страницу?

    JavaScript – язык интерпретируемый (простыми словами: интерпретируемый — исполняется последовательно команда за командой), но также оснащен JIT-компиляцией.

    JIT или компиляция «на лету» (Just-in-time compilation) — технология увеличения скорости работы программных систем, использующих байт-код, путём компиляции байт-кода в машинный код непосредственно во время работы программы.

    Рассмотрим некоторые понятия, относящиеся к синтаксису языка:

    Сценарий — текст, состоящий из:

    • операторов,
    • блоков, т. е. взаимосвязанных наборов операторов, и
    • комментариев.

    Операторы могут содержать:

    • переменные — могут изменять свое значение в программе,
    • константы — не изменяют свое значение,
    • выражения.

    Вспомним, что переменная — это область памяти для хранения значений; для обращения к переменной используется ее имя (идентификатор). Кроме того, у переменной есть тип данных — это тип значения, которое принимает переменная.

    Идентификаторы (identifiers) — имена переменных, методов и объектов:

    • состоят из комбинации букв и цифр;
    • должны начинаться либо с буквы, либо с символа подчеркивания;
    • не должны содержать пробелов.

    Важно: Язык JavaScript чувствителен к регистру:

    //переменные различаются:
    counter=1
    Counter=1

    «Верблюжья нотация» в записи идентификаторов:

    Есть определенные устоявшиеся среди программистов правила для идентификаторов (имён) переменных, функций, массивов и классов. Рассмотрим их:

    • num_docs — знак подчеркивания между словами — хорошо, но есть способ лучше
    • numDocs — вот такой «верблюжий» стиль превосходно подходит для именования переменных:
    • все имена строчными буквами,
    • на стыке слов — большая буква,
    • переменные и свойства — называем именами существительными,
    • массивы и коллекции — называем существительными во множительном числе,
    • функции и методы — называем глаголами,
    • название классов — с заглавной буквы.

    верблюжья нотация
    Пример:

    let myCounter=1; // просто переменная
    let userNames = new Array(); // массив
    function getUserCounter(){}// функция

    Ключевые слова (keywords) — предварительно определенные идентификаторы, составляющие основу языка программирования. Ключевые слова нельзя использовать для имен переменных, функций, объектов и методов.

    Литералы (literals) — это постоянные значения JavaScript. Это значения, которые не изменяются во время выполнения сценария (целочисленные литералы, литералы с плавающей точкой, логические литералы (true и false), строковый литерал — это ноль и более символов, заключенных в двойные («») или одиночные (») кавычки).
    переменные и ключевые слова в javascript

    Правила оформления скрипта JavaScript

    • каждый оператор JavaScript лучше начинать с новой строки;
    • каждый оператор заканчивается точкой с запятой;
    • сегодня точка с запятой в конце оператора не обязательна, но если написать в строку несколько операторов (это тоже разрешается), то необходимо их разделить через ‘;

    Такой код не работает:

    a=5   document.write(a)
    

    Код работает верно:

    // способ 1:
    a=5
    document.write(a)
     
    // способ 2:
    a=5; document.write(a);
     
    // способ 3:
    a=5; 
    document.write(a);
    • блок — это набор операторов (составной оператор), заключенный в фигурные скобки { }.
    {
     document.write(a);
     alert(b);
    }

    JavaScript комментарии

    В JavaScript допустимы два вида операторов комментария:

    1. // — одна строка символов, расположенная справа от этого оператора, считается комментарием;
    2. /*...*/ — все, что заключено между /* и */, считается комментарием; с помощью этого оператора можно выделить несколько строк в качестве комментария.
    // проверка
     
    /* здесь может быть ошибка
    a=5;
    document.write(a);
    */

    Второй способ комментирования обычно используется при поиске ошибок: тот блок сценария, в котором может находиться потенциальная ошибка, комментируется.

    Задание Js 4. Исправьте ошибки во фрагменте кода:

    alert("Hello World!"); / это однострочный комментарий

    Объявление переменных в javaScript и оператор присваивания

    Переменная (variable) — это имя, присваиваемое ячейке памяти компьютера, которая хранит определенные данные.

    JavaScript — нетипизированный язык. Это значит, что переменные принимают тот тип данных, значение которого в них присваивается. Напрямую задавать тип переменной не надо.

    Объявление переменной происходит при помощи служебного слова javascript let (раннее использовалось var):

    let + имя переменной + ;
    

    Пример объявления переменной:

    Оператор присваивания:

    Объявление переменной можно объединить с присваиванием:

    let + имя переменной + = + значение + ;
    

    Переменная всегда слева, справа – литерал (значение переменной).

    Пример:

    Таким образом, резюмируем. Существует три варианта объявления с присваиванием:

    1. или

    2. let hello;
      hello="привет";
    3. или

    Объявление переменной при помощи служебного слова let можно опускать

    Пример 4: Создать переменную с идентификатором myVal со строковым значением «Pi». Вывести значение переменной, используя модальное окно (метод alert()).
    использование переменных в javascript

    ✍ Решение:
     

    • Создайте html-страницу с тегом script, предназначенным для размещения дальнейшего кода:
    • <html>
      <head></head>
      <body>
      <script>
      // будущий код javascript
      </script>
      </body>
      </html>
    • Добавьте код для объявления, инициализации переменной и вывода ее значения в предназначенное для этого место:
    • let myVal; // объявляем переменную myVal 
      myVal = "Pi"; /* присваиваем myVal некоторое значение */
      alert (myVal); // выводим значение
    • Возможен также пример с необъявленной переменной:
    • myVal = "Pi"; /* присваиваем myVal некоторое значение */
      alert (myVal); // выводим значение
    • Запустите страницу в браузере и посмотрите на результат.

    Задание Js 5. Объявите две переменные разными способами и присвойте им значения. Выведите на экран значения переменных при помощи метода alert().

      
    Здесь вы можете скачать заготовку кода файла со скриптом. Щелкните правой кнопкой -> Сохранить ссылку как.

    Задание Js 6. Исправьте ошибки в правильности объявления локальных переменных во фрагменте кода:

    String s = "String";
    int a = 10;
    long b = 25;

    Константы в javaScript

    Объявление константы:

    const + имя константы + = + значение + ;

    Данные, присвоенные константе, в течение программы не меняются!

    Javascript типы данных

    Определение типа данных необходимо для установления операций, которые можно выполнить над переменными этого типа данных.

    Важно: Но необходимо помнить, что в javascript типы переменных явно не указываются, т.к. это динамически типизированный, а не строго типизированный язык программирования.

    Интерпретатор определяет тип переменной по правой части (по присвоенному ей значению).
    Объявление локальных переменных осуществляется при помощи ключевого слова let.

    Тип данных пример / объяснение
    javascript undefined type
    let x;
    alert (x);

    значение, которое используется для переменных или свойств объекта, значения для которых не существует или оно не присвоено

    Null type
    let x = 1;
    x = null //пустое значение

    значение, указывающее на отсутствие объекта

    Boolean type
    логический (true или false)
    let x=false;
    String type
    строковый
    let x="Привет";
    Number type
    числовой
    let x=3.14;
    let y=-567;
    RegExp
    регулярные выражения
    Object type Программный объект, определяемый своими свойствами

    Логический тип (boolean)

    Пример использования логического типа:

    let a = true;
    let b = false;
    c = a && b; // результат false
    c = a || b; // результат true
    с = !a; // результат false

    Javascript логические операторы:

    Оператор Название Пример
    ! Отрицание (логическое НЕ)
    && логическое И X && Y
    || логическое ИЛИ X||Y

    Задание Js 7.
    Выполните задание по шагам:

    • Создайте 3 переменные с использованием ключевого слова let с идентификаторами: a, b, c.
    • Переменной a присвойте значение false.
    • Переменной b присвойте значение null.
    • Переменная c должна принимать значение undefined.
    • Отобразите значение 3-х переменных последовательно в модальных окнах (то есть с помощью метода alert()).

      
    Здесь вы можете скачать заготовку кода файла со скриптом. Щелкните правой кнопкой -> Сохранить ссылку как.

    Строковый тип (string)

    Строка — набор символов, обрамляется либо в "", либо в ''

    Три способа создания строкового объекта:

    1. имя_переменной = new String("строковое_значение");
      myString = new String ("Hello!");
    2. имя_переменной = "строковое_значение";
    3. let имя_переменной = "строковое_значение";

    Операции над строками

    • Конкатенация объединение строк:
    • Пример:

      let x="При";
      let y="вет";
      let s=x+y; //"Привет"
    • Специальные символы:
    • n — новая строка
      t — табуляция

    Пример 5: Реализуйте приведенный ниже код, чтобы посмотреть, как работают специальные символы в javascript. Запустите страницу в браузере:

    alert("мама мыла раму");
    alert("мамаn мылаn раму");

    Задание Js 8. Что должно быть в ответе на следующие присваивания?
    "1"+2+3= ?
    1+2+"3"= ?

    Задание Js 9. Вывести в окно браузера при помощи метода alert() следующие данные: Ваше ФИО, возраст, хобби (каждое на новой строке: использовать специальные символы).

      
    Здесь вы можете скачать заготовку кода файла со скриптом. Щелкните правой кнопкой -> Сохранить ссылку как.

    Задание Js 10. С помощью javascript метода document.write() вывести в окно браузера строку: Кто ты такой? (с пробелами между словами).

    Последовательно выполните:

    1. Создать 4 переменные с использованием ключевого слова let с именами str1, str2, str3, concatenation.
    2. Переменной str1 присвоить фразу ‘Кто ‘, str2‘ты ‘, str3‘такой?’
    3. Локальной переменной concatenation присвоить результат конкатенации 3-х строк: str1, str2, str3.
    4. Вывести в документ содержимое переменной concatenation.

      
    Здесь вы можете скачать заготовку кода файла со скриптом. Щелкните правой кнопкой -> Сохранить ссылку как.

    Зачем в строке использовать знак доллара?

    Знак доллара $ внутри строки используется для перевода строкового значения в число и вычисления выражений. Для использования знака необходимо строку помещать в одинарные обратные кавычки `...` , а числовое выражение — в фигурные скобки {}:

    Пример 1:

    `2 + 3 = ${2 + 3}` // результат: '2 + 3 = 5'

    Т.е. выражение после знака $, помещенное в фигурные скобки, будет вычисляться и приклеиваться к строке слева.

    Пример 2:

    let s = `a=${a}, b=${b}`; // let s = 'a=' + a + ', b=' + b;

    Вот так выглядит красивый вывод результата для строки s.

    Числовой тип (number)

    В JavaScript существуют такие числовые типы:

  • int — целое,
  • long — длинное целое,
  • float — вещественное.
  •   
    Но явное указание типов в коде при объявлении переменной не нужно!

    Используется неявное объявление, без указания конкретного типа данных:

    let x = 5; // целое
    let y = 5.6; // вещественное

    Другие примеры:

    let x = 5e3; // 5000
    let y = 5e-3; // 0.005

    Префикс 16-ной системы в javascript 0x:

    Префикс 8-ной системы в javascript 0:

    let x = 0/0; // NaN - не число (not a number)
    let x = 1/0; // Infinity (бесконечность)

    Как изменить тип переменной?

    Обычные преобразования:

    Number(x) — к числовому типу
    String(x) — к строковому типу
    Boolean(x) — к логическому типу

    Компактные преобразования:

    +x // к числу
    x+'' // к строке
    !!x // к булеву типу

    Задание Js 11. Исправьте ошибки при объявлении локальных переменных во фрагментах кода:

    1. String s = "String";
      int a = 10;
      long b = 25;
    2. let name = "Меня  зовут  Вася  ";
      let 2b = 10;
      let _@c = 15;
      alert(Name);

    Вопросы для самоконтроля:

    • В каком месте html-документа находится стандартное расположение скрипта JavaScript?
    • С помощью какого метода осуществляется вывод диалогового окна?
    • Что такое типы данных? Какие типы поддерживает JavaScript?
    • С помощью каких операторов создаются комментарии?

    3. Арифметические операторы javascript

    Операторы предназначены для составления выражений.

    Оператор применяется к одному или двум данным, которые в этом случае называются операндами.

    Например, оператор сложения применяется к двум операндам (a + b), а оператор логического отрицания — к одному операнду (¬a).

    Операторы присваивания:

    • = обычная операция присваивания;
    • у = 5;
      alert(y); // вывод 5
    • +=, -= присваивание со сложением или вычитанием;
    • у = 5;
      alert(y-=2); // вывод 3
    • *=, /= присваивание с умножением или делением.
    • у = 5;
      alert(y*=2); // вывод 10

    Арифметические операторы:

    • сложение в javascript: +
    • X + Y;
      у = 5;
      х = у + 3; // равно 8
    • вычитание в javascript: -
    • умножение в javascript: *
    • деление в javascript: /
    • возведение в степень в javascript: **
    • X = 8;
      Y = 2;
      X ** Y; // 64
    • javascript остаток от деления или деление по модулю: %
    • X = 8;
      Y = 5;
      X % Y; // 3
    • javascript инкремент или увеличение на 1: ++
    • Х = 8;
      Х++;  // 9
       
      /* Префиксный инкремент выполняется перед использованием переменной, пример:*/
       let number = 100; 
       ++number; // примет значение 101
       
      /*Постфиксный инкремент выполняется после использования переменной, пример:*/
       let number = 100; 
       number++; // примет значение 100
       alert(number); // выведет число 101
    • javascript декремент или уменьшение на 1: --

    Задание Js 12. Какие значения выведет в окно браузера следующий фрагмент кода?

     let str = "20";
     let a = 5;
     document.write(str + a + "<br/>");
     document.write(str - a + "<br/>");
     document.write(str * "2" + "<br/>");
     document.write(str / 2 + "<br/>");

    Имейте в виду, так как переменная str является строковым типом, то переменная a типа Number неявно преобразуется в строку и далее производится операция конкатенации. Но если операция сложения для строкового значения существует, то операции деления и вычитания для строк отсутствуют, соответственно, действия будут происходить с числами.

    Js 13. Необходимо написать сценарий, определяющий площадь прямоугольного треугольника по заданным катетам (S = ab/2). Сценарий разместить в разделе body документа. С помощью скрипта вывести в окно браузера инкремент площади.

    Результат:

    Площадь прямоугольного треугольника со сторонами 8 и 10 = 40
    Инкремент площади = 41
    

    Алгоритм решения задачи на javascript:

    • Инициализация двух переменных.
    • Вычисление площади.
    • Вывод инкремента с использованием метода write().

      
    Здесь вы можете скачать заготовку кода файла со скриптом. Щелкните правой кнопкой -> Сохранить ссылку как.

    Вопросы для самоконтроля:

    • Что выполняют арифметические операции инкремент и декремент?
    • Какова разница выполнения инкремента?:
    • S++
      ++S

    • Как обозначается операция остаток от деления?

    Что такое JS (JavaScript)

    JavaScript — один из самых популярных языков программирования в мире, который широко используется в web-браузерах для описания поведения HTML-страниц в ответ на действия пользователя при взаимодействии с ними.

    Здесь и далее JavaScript рассматривается в среде браузера.

    Изначально язык создавался только для работы в браузере, но уже сегодня скрипты могут исполняться на любом устройстве, которое имеет специальную программу обработки кода JavaScript, в сообществе ее просто называют «движком».

    Например, платформа Node js позволяет исполнять код на сервере.

    Условно язык можно разделить на три компонента:

    • ядро (ECMAScript);
    • модель браузера
    • модель документа

    Последние два компонента существуют только в среде браузера.

    • ECMAScript представляет собой язык без средств ввода/вывода данных и содержит описание типов данных и зарезервированных языком слов, операторов и регулярных выражений. Ядро может быть легко встроено, что позволяет без ограничений расширять его возможности и создавать производные скриптовые языки: JavaScript, CoffeeScript, TypeScript или Dart.

    • Модель документа (DOM — Document Object Model) — это API для HTML-страниц и XML-документов, позволяющее производить над ними различные манипуляции, например, добавление/изменение/удаление узлов.

    В сравнении с другими языками программирования JavaScript имеет следующие особенности:

    • автоматическое управление памятью;
    • отсутствие строгой типизации данных;
    • отсутствие доступа к функциям операционной системы;
    • полная интеграция с HTML-страницами и CSS;
    • обработка действий пользователя и событий браузера.

    Начало работы

    Единственный способ интегрировать код JavaScript — использовать тег <script>, который позволяет подключать скрипты двумя способами:

    • прямой вставкой кода как в примере выше (внутренние скрипты);
    • через файл (внешние скрипты).

    внутренние скрипты

    Код пишеться между тегами <script></script> d HTML документе

    <!doctype html>
      <html lang="en">
        <head>
          <meta charset="utf-8" />
          <title>JavaScript</title>
        </head>
        
        <body>
          <h1>Hello</h1>
          <script>
            function showMessage(){
              document.getElementById("message").style.display = 'block';
            }
          </script>
        </body>
      </html>
    
    

    внешние скрипты

    Подключаются отдельным файлом

    <script src="scripts/index.js"></script>
    
    

    -src — путь к файлу

    Старайтесь всегда писать скрипты в отдельных файлах, чтобы поддерживать вашу кодовую базу в порядке и избегать разрастания index.html.

    Загрузка скриптов

    Рассмотрим подробно процесс подключения файлов JavaScript к HTML-странице.

    Здесь важно понимать, что построение документа осуществляется считыванием кода по порядку сверху вниз
    
    
    Когда браузер доходит до тега <script>, он начинает загружать исполняемый код и на время загрузки скрипта блокирует дальнейшее построение страницы.
    
    

    При быстром интернете задержка будет не видна, но при медленном сетевом соединении она вряд ли останется незамеченной для пользователя.

    <p>Before script execution</p>
      
      <script>alert('Script execution');</script>
      
    <p>After script execution</p>
    
    

    Также отображение страницы может быть приостановлено выполнением самого кода.

    В приведенном примере сначала отобразится текст Before Script Execution, а после выполнения кода — After Script Execution.

    Чтобы избежать такого поведения обычно скрипты подключают в самом конце перед закрывающим тегом .

      <script src="scripts/index.js"></script>
      </body>
      
    

    Но и это не решает всех проблем. Если у вас более одного подключаемого файла JavaScript, то каждый последующий файл не будет загружен до тех пор, пока не загрузится предыдущий.
    Здесь уже необходимо использовать атрибуты async и defer.

    Async

    Атрибут async выполняет скрипт в асинхронном режиме. Это означает, что загрузка кода JavaScript осуществляется в фоновом процессе и процесс построения HTML-документа не приостанавливается, браузер работает в штатном режиме.

    Сам код будет выполнен после полной загрузки файла.

    <script src="scripts/script1.js" async></script>
    <script src="scripts/script2.js" async></script>
    
    

    Атрибут JavaScript async не сохраняет порядок выполнения файлов, описанный при их подключении. Первым выполнится тот скрипт, который первым будет загружен

    Defer

    Подобно атрибуту async defer также загружает и выполняет JavaScript-код асинхронно. Но у defer есть две особенности:

    • скрипты выполняются в порядке их подключения, т.е. даже если следующие за первым файлы загрузятся раньше, они будут ждать загрузки и выполнения первого скрипта;

    • загруженный код выполняется только после полной загрузки страницы.

    Aтрибут defer используют тогда, когда выполнение следующего скрипта зависимо от предыдущего.

    JavaScript async и defer применяются только для внешних скриптов и позволяют размещать теги  <script> на странице в любом месте. Поэтому оптимальным вариантом размещения будет тег <head>
    
    

    Типы данных

    JavaScript относится к слабо типизированным языкам программирования, что подразумевает отсутствие необходимости указывать тип данных при объявлении переменной. В процессе выполнения скрипта тип данных будет определен автоматически.

    Типы данных JavaScript:

    Number (число);
    String (строка);
    Boolean (логический тип);
    Null;
    Undefined (тип неопределен)
    Object (объект).
    Symbol
    BigInt

    Все типы данных в JS кроме объектов являются примитивными. Примитивными считаются те типы данных, значения которых не могут быть изменены, а только перезаписаны совершенно новым значением.

    Number

    Тип Number соответствует числам.

    В JavaScript к числовому типу данных также относятся значения NaN (Not A Number или «не число») и Infinity (бесконечность). Значение NaN получается в результате арифметической операции числа и любого другого типа данных, когда механизм неявного приведения типов оказался бессилен.

    'String' / 10; // тип Number, значение NaN
    
    

    Infinity является результатом деления любого числа на 0

    1 / 0; //тип Number, значение Infinity
    
    

    String

    Строками в JavaScript представлены текстовые данные. Строка представляет собой последовательность символов и создается с помощью одинарных, двойных или обратных кавычек.

    Boolean

    Тип данных Boolean, или логический тип, представлен двумя значениями: true (истина) и false (ложь).

    
    true; //Boolean
    false; //Boolean
    5 > 10; //Boolean (false)
    
    

    Null

    Единственным значением типа данных Null в JS является null, означающим «ничего» или пустое значение. Обычно используется для намеренного «сброса» значения переменной, обычно применительно к объектам.

    let account = {
      login: 'login',
      password: 'pwd'  
    };
    
    console.log(account.login);
    
    account = null; //значение null тип Null
    
    console.log(account.login); //Uncaught TypeError: Cannot read property 'login' of null
    
    

    Undefined

    Тип Undefined имеет единственное значение undefined, которое говорит о том, что переменной еще не было присвоено значение.Только что объявленные переменные, которым изначально не было задано никакого значения, равны undefined.

    let a; //значение undefined тип Undefined
    
    

    Object

    Тип Object представлен объектами и считается сложным типом данных JavaScript. Это значит, что при создании объекта в памяти для него выделяется область, а в самой переменной сохраняется ссылка на эту область памяти. При изменении значения объекта его место в памяти не меняется.

    Объект представляет собой набор свойств и может рассматриваться как контейнер для множества значений. В ходе выполнения скрипта объект может расширяться новыми свойствами или же из него могут быть удалены уже существующие.

    let account = {
      login: 'login',
      password: 'pwd'  
    };
    
    account.lastLogin = '01.02.2020';
    
    

    Здесь в примере после объявления и инициализации переменной account значение объекта расширяется дополнительным свойством lastLogin, но значение самой переменной account остается неизменным, поскольку она хранит ссылку на значение объекта.

    Оператор typeof

    JavaScript оператор typeof используется для определения типа данных. Единственным аргументом typeof принимает значение, тип которого необходимо определить, и возвращает наименование определенного типа в строковом виде.

    console.log(typeof 9); // number
    console.log(typeof NaN); // number
    console.log(typeof 'String'); // string
    console.log(typeof true); // boolean
    console.log(typeof {name: 'Sally'}); // number
    console.log(typeof null); // object
    console.log(typeof undefined); // undefine
    
    

    Переменные

    Переменные в JavaScript используются для записи и хранения данных. Для определения переменных используются ключевые слова var, let и const.

    var name = 'Vasya';
    let programinLanguage = 'javascript';
    const age = 20;
    
    

    Различия var, let и const

    let

    Создание в JavaScript переменной с использованием директивы let — современный метод объявления переменной.

    Область видимости такой переменной ограничивается блоком кода, в котором она создается, и всеми его дочерними блоками. Переменная не может использоваться за пределами этого блока.
    
    

    Блоком считается область, ограниченная фигурными скобками, например, тело операторов условий, циклов, функций, классов. Глобальная область видимости HTML-документа также является блоком.

    let globalCount = 0;
    
    {
      let localCount = 1;
    }
    
    console.log(globalCount); // 0
    console.log(localCount); //Uncaught ReferenceError: localCount is not defined
    
    

    var

    Объявление переменной с помощью var сегодня считается устаревшим способом

    Директива JS var позволяет определить переменную уже после ее использования, т.к. объявление такие переменных выполняется еще до выполнения самого кода. Такое поведение называется всплытием.

    count = 5;
    
    var count;
    
    console.log(count);
    
    

    При использовании JS let выполнение такого кода привело бы к ошибке. Областью видимости переменной, объявленной с помощью JS var, является ее контекст выполнения.

    Всплытие актуально только для переменных, объявленных через var.
    
    
    Область видимости переменной, объявленной через var, это её текущий контекст выполнения. Который может ограничиваться функцией или быть глобальным, для переменных, объявленных за пределами функции.
    
    

    const

    Директива JS const используется для объявления переменных, значение которых неизменно. Такие переменные называются константами. Присваивание нового значения или переопределение константы закончится ошибкой.

    const a = 1;
    
    a = 2; // Error
    
    

    Объявление переменных JavaScript

    Каждая переменная должна иметь уникальное название (имя), которое называется идентификатором

    Создание переменной называется объявлением переменной, а сохранение в нее значения — операцией присваивания или инициализацией.

    В JavaScript все переменные хранятся в оперативной памяти.

    При наличии двух и более переменных с одинаковым названием будет сгенерировано исключение

    let userName = 'Alex';
    let userName = 'John'; //ошибка, переменная с таким именем уже существует
    
    

    img

    Все ошибки, возникающие в коде JavaScript, отображаются в консоли браузера. Из выводимой информации можно узнать, что именно произошло и в каком месте.

    Значение JavaScript переменной может изменяться сколько угодно раз. При этом все предыдущие значения удаляются из памяти.

    let userName = 'va';
    userName = 2;
    userName = false;
    
    

    Именование переменных JavaScript

    • в названии можно использовать только латинские символы, цифры и символы — и $
    • имя не должно начинаться с цифры;
    • названия переменных чувствительны к регистру;
    • названиями не могут быть ключевые слова JavaScript

    Старайтесь называть переменные так, чтобы ее назначение было понятно из ее имени. Не используйте аббревиатуры, сокращения и общие понятия. Если название состоит из нескольких слов, можно использовать следующие варианты записи:

    userName, стиль camelCase;
    user_name, стиль underscore.
    
    

    Выражения и операторы

    В JavaScript выделяют следующие типы операторов:

    • Присваивания (=, +=, -=, *=, /=)
    • Арифметические (+, -, *, /)
    • Сравнения (>, <, ==)
    • Логические (||, &&)
    • Условные
    let amount1 = -1;
    let amount2 = 1 - amount1;
                       
    

    Здесь в первом случае оператор вычитания является унарным, а во втором — бинарным.

    Оператор присваивания

    Оператор присваивания = используется для записи значения в переменную.

      var a; // тип Undefined
      a = 'JavaScript'; // тип String
    

    ++ (инкремент, или увеличение на единицу), может применяться в качестве префикса или постфикса. Использование оператора в качестве префикса сперва увеличит значение переменной, а потом использует его, в качестве постфикса — сначала использует значение, а затем увеличит его

     let inc = 1;
    //инкремент постфикс
    let a = inc++; //в a сохранится 1
    //инкремент префикс
    let a = ++inc; //в a сохранится 2
                       
    

    — (декремент, или уменьшение на единицу), также может применяться как префикс или как постфикс

      let decr = 1;
      //декремент постфикс
      let a = decr--; //в a сохранится 1
      //декремент префикс
      let a = --decr; //в a сохранится 0
                       
    

    % (остаток от деления)

      let left = 5 % 2; //здесь в left запишется остаток от деления 5 на 2, т.е. 1
                       
    

    #Операторы сравнения

    Операторы сравнения используются для сравнения операндов и возвращают результат типа Boolean (логическое значение, true или false).

    В JavaScript операторами сравнения являются:

    == (равно), возвращает true, если значения равны между собой

    ```
      3 == 3; //true
      1 == 3; //false
    
    ```
    

    != (не равно), возвращает true, если значения не равны между собой

     ```
      3 != 3; //false
      1 != 3; //true
    
     ```
    

    === (строгое равно), возвращает true, если значения равны между собой и имеют одинаковый тип данных

      3 === 3; //true
      3 === '3'; //false, здесь первый операнд число, а второй - строка
                       
    

    !== (не строгое равно), возвращает true, если значения не равны между собой и/или имеют разный тип данных

      3 !== 3; //false
      3 !== '3'; //true, здесь первый операнд число, а второй - строка
    

    , < (больше и меньше)

      3 < 5; //true
      4 > 7; //false
                
    

    =, <= (больше или равно и меньше или равно)

      5 <= 5; //true
      6 >= 9; //false
    

    #Логические операторы

    Логические операторы JavaScript используются применительно к булевым значениям и выражениям, возвращаемым резльтатом также является булевое значение.

    К логическим операторам относятся

    • && (и), возвращает первый операнд, если его значение равно (или может быть преобразовано) false, в противном случае возвращается значение второго операнда. Проще говоря, && вернет true, если оба операнда равны true, или вернет false, если значение одного из операндов равно false
     5 == 5 && 1 == 3; //false
     5 == 5 && 1 == 1; //true
    
    
    • || (или), возвращает значение первого операнда, если он равен true, в противном случае возвращается второй операнд. Проще говоря, || вернет первый попавшийся операнд, значение которого равно (или может быть преобразовано) true, иначе будет возвращено false
    2 == 3 || 3 == 3; //true
    5 != 5 || 1 != 1; //false
    5 != 5 || 1 != 7; //true
    
    
    • ! (не), возвращает обратное булевое значение операнда
    !false; //вернет true 
    !true; //вернет false
    
    
    • Операторы && и || могут также использоваться с выражениями.
    let a = 1, b = 2, c;
    c = b > a && a + b; //в c запишется 3
    
    

    Поскольку здесь значение первого JavaScript выражения b > a равно true, в переменную c сохраняется значение второго выражения a + b. Если бы b > a вернуло false, то и в c было бы false

    let a = false, b = 10;
    let value = a || b; //value равно 10
    
    

    #Условные операторы

    Условный оператор принимает одно из двух значений (или выражений) в зависимости от истинности переданного ему условия. Условный оператор еще называют тернарным, т.к. это единственный оператор JavaScript, который работает с тремя операндами.

    Структура тернарного оператора

    условие ? значение, если истина : значение, если ложно
    
    
    

    Пример использования тернарного JavaScript оператора

    let score = 110;
    let win = score > 100 ? 'Yes' : 'No'; //значение win - 'Yes'
    
    

    HomeWork

    1. ! Учить теорию !
    2. Есть переменая name

    Если в переменную вписана строка , то выводим в консоль сообщение «Привет, ЗНАЧНИЕ_NAME»
    Если в переменную вписана не строка, а любой другой тип данных, то выводим сообщение «Ошибка, не тот тип данных»

    Кейс 1

    const name = 'Vasya';
    
    console.log(.....)  // Hello Vasya 
    
    

    Кейс 2

    const name = 123;
    
    console.log(.....)  // Ошибка, не тот тип данных
    
    
    1. Вівести в консоль примеры всех типо данных
    typeof (1); // number
    typeof ('a'); // string
    
    

    Допустим, вы начали писать свою первую реально полезную программу на JavaScript. У вас появляются реальные задачи, и они намного сложнее, чем обойти массив и сложить два числа. Где искать ответы на вопросы, о которых вы раньше не подозревали? У кого заимствовать идеи? Как их вклеить в свой код? Что делать, если что-то не работает, хотя должно?

    Вот об этом — в статье. 

    Как начать исполнять программы

    Раньше вы могли исполнять код в браузере, прямо в консоли: открываете любую страницу, вызываете консоль, пишете код, исполняете.

    Для рабочих проектов вам нужно будет разработать какой-то носитель для кода — что-то, что можно будет запустить с компьютера или из интернета. Для этого вам понадобятся два компонента: 

    • Веб-страница с HTML — она будет отвечать за интерфейс программы и нести в себе код JavaScript.
    • Код JavaScript, встроенный в эту страницу или в отдельном файле. 

    Страницу нужно будет положить на компьютер или опубликовать в интернете.

    HTML — это язык гипертекстовой разметки документов (HyperText Markup Language). Проще говоря, это набор команд, которые говорят нашим браузерам, как рисовать сайты. Самая простая страница выглядит так:

    <!DOCTYPE html>
    <html lang="ru">
    <head>
    	<meta charset="utf-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1">
    	<title></title>
    </head>
    <body>
    
    </body>
    </html>

    На ней ничего нет, это просто шаблон, который можно наполнить своим содержимым — текстом, картинками, кнопками и скриптами.

    <!DOCTYPE html>
    <html>
    <!-- служебная часть -->
    
    <head>
      <!-- заголовок страницы -->
      <title>Адаптивная вёрстка на Бутстрапе</title>
      <!-- настраиваем служебную информацию для браузеров -->
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
        integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
      <!-- задаём CSS-стили прямо здесь же, чтобы всё было в одном файле -->
      <style type="text/css">
        img {
          max-width: 100%;
        }
      </style>
      <!-- закрываем служебную часть страницы -->
    </head>
    
    <body>
      <div class="container">
        <div class="row">
          <div class="col-12">
            <h1>Адаптивная вёрстка</h1>
          </div>
        </div>
      </div>
      <div class="container">
        <div class="row">
          <div class="col-12 col-sm-12 col-md-4 col-lg-2 col-xl-2">
            <img src="http://thecode.local/wp-content/uploads/2019/06/cat1.jpg">
          </div>
          <div class="col-12 col-sm-12 col-md-4 col-lg-8 col-xl-8">
            <img src="http://thecode.local/wp-content/uploads/2019/06/cat2.jpg">
          </div>
          <div class="col-12 col-sm-12 col-md-4 col-lg-2 col-xl-2">
            <img src="http://thecode.local/wp-content/uploads/2019/06/anton-kraev-1166716-unsplash.jpg">
          </div>
        </div>
      </div>
    </body>
    <!-- конец всей страницы -->
    
    </html>

    HTML-страница сама по себе просто показывает какой-то контент. Чтобы там началась какая-то работа программы, внутрь страницы нужно встроить скрипт. Его можно добавлять прямо в HTML-файл в раздел <script>:

    <script>
    <!-- Здесь будет наш скрипт -->
    	// Заводим переменные под наши задачи
        	var List = $('#tdlApp ul');
      	var Mask = 'tdl_';
    	var number_Id = 0;
    </script>

    Другой вариант — писать код в отдельном файле подключать его к странице так:

    <script type="text/javascript" src="script.js"></script>

    Этот файл нужно положить туда, где находится наша HTML-страница  — в этом случае браузер заберёт команды оттуда и сам добавит их выполнение на сайт.

    ⚠️ Куда положить скрипт? Теоретически скрипт можно положить в любое место страницы. Но для корректной работы он должен находиться перед закрывающим тегом </body>. То есть сначала должны загрузиться все элементы интерфейса и все стили, а потом — скрипт. Если в скрипте идёт обращение к каким-то элементам страницы, но эти элементы ещё не загрузились, браузер может выдать ошибку, а программа не исполнится. 

    То есть правильно так:

    <!--какой-то код HTML-страницы -->
    <script type="text/javascript">/*Тут ваш скрипт*/</script>
    </body>
    <!-- Закончилась страница -->
    </html>
    <!-- Закончился документ -->

    Консоль

    При отладке скрипта вам понадобится консоль браузера. Туда вы будете выводить сообщения об ошибках, тестировать кусочки кода, вызывать отдельные функции, в общем — тыкать программу. 

    Почти во всех современных браузерах консоль можно открыть сочетанием клавиш Shift + Ctrl + J или Cmd + Alt + J. Справа или снизу появится дополнительное окно, в котором уже будет что-то происходить:

    Спасательный круг для тех, кто начинает писать на JavaScript

    Если у вас не открылась консоль, зайдите в верхнее меню и поищите слово «Консоль». Обычно этот пункт прячется в разделе «Инструменты разработчика».

    Когда вы открываете консоль, она сразу готова выполнять ваши команды. Если в неё вставить программу, написанную на JavaScript, и нажать Enter, ваш браузер её исполнит. Если в коде есть ошибки, консоль сама подсветит их. Можно отправлять в неё программу кусками: браузер будет помнить всё, что происходило в вашей программе, пока вы не перезагрузите страницу.

    Самые основы JavaScript

    Напомним необходимый минимум, чтобы писать на JavaScript: переменные, типы данных, циклы и условия, функции. 

    Переменная — это небольшая часть оперативной памяти, которой можно дать своё имя, а потом что-то там хранить: числа, строки и всё остальное. Самый простой способ объявить переменную — написать:

    var i; ← просто объявили переменную i;

    или var i = 15; ← объявили переменную i и сразу положили туда число 15.

    Чтобы компьютер знал, как работать с какой переменной, используют типы данных — они говорят компьютеру, что именно лежит в переменной, например:

    var a = 1; ← целое число;

    var b = 0.75; ← дробное число;

    var c = ‘Привет!’; ← строка;

    var d = [1,2,3,4,5];  ← массив;

    var f = true; ← логическое значение.

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

    Вместо var вы часто встретите в чужом коде слово let. Это тоже объявление переменной, но локальной: как только выполнится текущий кусок кода (например, цикл или функция), эта переменная самоуничтожится. Обычно глобальные переменные для всей программы объявляют через var, а внутренние и временные переменные — через let

    Циклы. Если нам нужно, чтобы компьютер сделал что-то несколько раз подряд, используют циклы. Главное, за чем следят в цикле, — чтобы он точно когда-нибудь закончился. Если этого не предусмотреть, то цикл будет выполняться бесконечно и программа зависнет.

    В JavaScript есть три вида циклов:

    Цикл for. В общем виде он выглядит так:

    for (начало; условие цикла; шаг) {
      // тело цикла
    }

    Начало — это с какого значения переменной мы начинаем работать в цикле, условие — до каких пор цикл будет выполняться, а шаг — это на какое значение будет меняться переменная цикла. Например, вот как можно вывести числа от 0 до 10 в цикле for:

    for (let i = 0; i <= 10; i++) { 
      console.log(i);
    }

    Цикл while. Он сначала проверяет условие, потом выполняет то, что внутри цикла, потом снова идёт проверять условие, и так до тех пор, пока условие не станет ложным:

    while (условие) {
      // тело цикла
    }

    Выведем те же числа от 0 до 10:

    var i = 0;
    while (i <= 10) {
      console.log(i);
      i++;
    }

    Цикл do..while. Работает так же, как предыдущий, только мы сначала хотя бы раз выполняем тело цикла, а потом идём проверять условие:

    var i = 0;
    do {
      console.log(i);
      i++;
    } while (i <= 10)

    Функции. В скриптах часто используют функции — это мини-программы, которые сначала описываются, а потом вызываются одной строкой. В общем виде функции выглядят так:

    function название(аргументы) {
    	// полезная работа
    }

    Например, эта функция выводит в консоль текущее время и дату:

    function printCurrentDate() {
    	var objToday = new Date(),
    	weekday = new Array('Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'),
    	dayOfWeek = weekday[objToday.getDay()],
    	dayOfMonth =  objToday.getDate(),
    	months = new Array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'),
    	curMonth = months[objToday.getMonth()],
    	curYear = objToday.getFullYear(),
    	curHour = objToday.getHours() > 12 ? objToday.getHours() - 12 : (objToday.getHours() < 10 ? "0" + objToday.getHours() : objToday.getHours()),
    	curMinute = objToday.getMinutes() < 10 ? "0" + objToday.getMinutes() : objToday.getMinutes(),
    	curSeconds = objToday.getSeconds() < 10 ? "0" + objToday.getSeconds() : objToday.getSeconds(),
    var today = curHour + ":" + curMinute + " " + dayOfWeek + " " + dayOfMonth + " " + curMonth + " " + curYear+ " г.";
    return today;
    }

    А чтобы выполнить всё это хозяйство, достаточно написать в консоли или вызвать в коде одну команду: 

    printCurrentDate();

    Обратите внимание, что в коде выше в конце функции стоит слово return. Оно значит, что когда функция исполнится, она отдаст какое-то значение тому, что её вызвало. Если лично вы вызвали функцию из консоли, то лично вам в консоль вернётся значение текущей даты. А если вы хотите, чтобы эта дата вылезла в виде всплывающего окошка, нужно будет вызвать эту функцию вот так:

    alert(printCurrentDate());

    Что переводится как «Исполни функцию printCurrentDate без дополнительных аргументов, а её результат передай команде alert».

    Кстати, как только функция выполняет команду return, она отдаёт нужные данные и перестаёт выполняться. 

    Аргументы функции. У функции могут быть аргументы: это способ сообщить что-то в функцию. Например, у вас может быть функция для проверки логина и пароля. Чтобы проверить их, вам нужно передать в функцию логин и пароль. Вы указываете при объявлении функции, что вам нужно передать в неё эти два параметра, и называете их по именам. Дальше внутри функции вы можете использовать эти имена. А при вызове функции вам нужно вместо имён передать уже настоящие данные.

    Вот мы определили функцию, в которую передаются два параметра, а потом они проверяются:

    function checkUserCredentials(username, password){
    /*тут вы проверяете переменные username и password, например так:*/
    if (username == secret1 && password == secret2){
    return true;
    }else{
    console.log('Неверный логин или пароль');
    return false;
    }
    }

    А теперь вызываем эту функцию, но уже с нужными данными: 

    var isValidUser = checkUserCredentials('admin','qwerty');

    Вместо конкретных строк admin и qwerty можно передать в функцию значения других переменных, а также целые объекты, массивы и что угодно ещё. Представьте, что это такое окошко, через которое вы передаёте что-то в функцию. 

    Как обратиться к чему-то на странице

    Иногда в коде нужно обратиться к какому-то элементу на странице: конкретной кнопке, абзацу, элементу с определённым классом или названием. Для этого используют такое:

    document.getElementById() — находит элемент по его ID. Например, если у нас есть абзац <p id="radio">Это текст абзаца</p>, то обратиться к нему можно так:

    var s = document.getElementById("radio");

    После этого через переменную s можно работать с этим конкретным абзацем.

    Кроме document.getElementById() ещё применяют:

    • document.getElementsByName() — поиск по имени элемента;
    • document.getElementsByClassName — по названию класса;
    • document.querySelector() — возвращает первый элемент с указанным CSS-стилем;
    • document.querySelectorAll() — возвращает все элементы с указанным CSS-стилем.

    Как вставить чужой код и вызвать его

    Наверняка у вас возникнет ситуация, что вы хотите решить какую-то задачу кодом, но вообще не знаете, как к ней подойти. Тогда: 

    1. Вы пишете в поисковой системе, что вам нужно сделать.
    2. Скорее всего, вы попадёте на сайт StackOverflow.
    3. Там вы увидите несколько вариантов решения вашей проблемы с готовым кодом.
    4. Вы возьмёте этот код и вставите в свой.
    5. Возможно, он заработает.

    Чтобы код заработал, помните о таких нюансах:

    Чаще всего вам дадут функции, которые нужно будет потом вызвать. Например, вы скопировали какой-то такой код: 

    function solveMyProblem(){
    /*тут непонятный код*/
    }

    Вы вставляете этот код в свою программу, но ничего не происходит. Причина в том, что вы вставили функцию, но не вызвали её. Теперь нужно её вызвать — например повесить исполнение этой функции на кнопку. Или для начала просто открыть консоль и выполнить эту функцию: 

    solveMyProblem();

    В функции могут быть ссылки на что-то в вашей странице. Например, у вас функция, которая делает что-то с вашей страницей — скажем, меняет цвет элемента. И там будет такая строка: 

    document.getElementById("myElement");

    Вместо myElement может быть что-то другое. Вот на место этого слова нужно вписать айдишник нужного вам объекта на странице. Если у нужного объекта нет айдишника, его нужно прописать. Например:  <div id="myElement">...</div>.

    Как повесить событие на кнопку или нажатие клавиши

    Самый простой способ научить страницу реагировать на действия пользователя — сопоставить какое-то действие с нажатием кнопки на сайте или на клавиатуре.

    Кнопка на странице

    1. Создаём кнопку на странице тегом <button>:
      <button>Это кнопка</button>
    2. Добавляем обработчик нажатия onclick — он сработает, когда мы нажмём на кнопку:
      <button onclick="">Это кнопка</button>
    3. Внутри кавычек пишем JS-команду или функцию из нашего скрипта, который мы подключили к странице. Например, вызовем функцию test():
      <button onclick="test()">Это кнопка</button>

    Сейчас при нажатии на кнопку у нас сработает функция test() — для этого страница пойдёт в скрипт, найдёт эту функцию и выполнит её. Можно посмотреть, как устроен проект по предсказанию курса крипты, — там мы тоже используем обработчик кнопок на странице.

    Кнопка на клавиатуре:

    1. Добавляем на страницу стандартный обработчик событий addEventListener().
    2. Указываем, что будем следить за нажатиями на клавиатуре — пишем параметр 'keydown'.
    3. Внутри обработчика проверяем код кнопок и выполняем нужные действия, например, вызываем функции.

    Например, вот так мы сделали управление платформой в пинг-понге на JavaScript:

    // Отслеживаем нажатия клавиш
    document.addEventListener('keydown', function (e) {
      // Если нажата клавиша вверх,
      if (e.which === 38) {
        // то двигаем правую платформу вверх
        rightPaddle.dy = -paddleSpeed;
      }
      // Если нажата клавиша вниз,
      else if (e.which === 40) {
        // то двигаем правую платформу вниз
        rightPaddle.dy = paddleSpeed;
      }
      // Если нажата клавиша W, 
      if (e.which === 87) {
        // то двигаем левую платформу вверх
        leftPaddle.dy = -paddleSpeed;
      }
      // Если нажата клавиша S,
      else if (e.which === 83) {
        // то двигаем левую платформу вниз
        leftPaddle.dy = paddleSpeed;
      }
    });

    Нужна ли здесь jQuery или какая-нибудь ещё библиотека?

    Библиотеки в языках программирования — это дополнительные модули, которые подключаются к программе. Сила библиотек в том, что с их помощью можно одной командой заменить несколько десятков строк кода. 

    Чаще всего из дополнительных библиотек при веб-разработке подключают jQuery — с ней многие вещи можно сделать проще и быстрее. Примерно в половине случаев, когда вы берёте чужой код, там используется jQuery. Самый верный признак этого — в коде есть знак доллара и конструкции типа:

    var $elem = $(".SomeClass")
    $elem.remove();

    Чтобы такое заработало, нужно подключить jQuery на HTML-странице, добавив перед вызовом своего скрипта такую строку:

    <script src="https://yastatic.net/jquery/3.3.1/jquery.min.js" type="text/javascript"></script>

    Если знака доллара нет, но при запуске скрипт ругается на какую-то команду, то, скорее всего, нужно подключить что-то ещё. Самый простой способ узнать, что именно подключать, — набрать в Яндексе набрать название этой команды и добавить фразу «как работает». Например, если скрипт выдаёт ошибку на команде LUME.defineElements();, то первый же ответ в поиске даст нам нужную библиотеку:

    Спасательный круг для тех, кто начинает писать на JavaScript

    Куда ходить за вопросами или помощью

    Если нужно разобраться, как работает какая-то функция, библиотека или технология, — читайте «Код».

    Если нужно быстрое решение — ищите его на StackOverflow.

    Если нужна помощь со стороны и подробные объяснения, как что устроено, — приходите учиться в Практикум на веб-разработку. Можно не спеша на курсах, можно быстро на буткемпе.

    Что дальше

    В следующей статье попробуем собрать рабочий проект из разных кусков StackOverflow, склеивая его с помощью базовых знаний о разработке. А пока посмотрите, как устроены некоторые наши проекты:

    • Своя игра: создаём собственную «Змейку»
    • Пианино на JavaScript для Chrome
    • Автоматическое оглавление на странице
    • Делаем игру Quatro 

    Вёрстка:

    Кирилл Климентьев

    Понравилась статья? Поделить с друзьями:
  • Как написать скрипт для установки программ
  • Как написать скрипт для трейдингвью
  • Как написать скрипт для сайта на python
  • Как написать скрипт для роблокс студио
  • Как написать скрипт для отдела продаж