--- title: Основы JavaScript slug: Learn/Getting_started_with_the_web/JavaScript_basics tags: - Beginner - CodingScripting - JavaScript - Learn - Новичку - Обучение translation_of: Learn/Getting_started_with_the_web/JavaScript_basics ---
JavaScript – это язык программирования, который добавляет интерактивность на ваш веб-сайт (например: игры, отклик при нажатии кнопок или при вводе данных в формы, динамические стили, анимация). Эта статья поможет вам начать работать с этим захватывающим языком и даст вам представление о том, на что он способен.
{{Glossary("JavaScript")}} ("JS" для краткости) — это полноценный {{Glossary("Dynamic programming language", "динамический язык программирования")}}, который применяется к {{Glossary("HTML")}} документу, и может обеспечить динамическую интерактивность на веб-сайтах. Его разработал Brendan Eich, сооснователь проекта Mozilla, Mozilla Foundation и Mozilla Corporation.
JavaScript невероятно универсален и дружелюбен к новичкам. Обладая большим опытом, вы сможете создавать игры, анимированную 2D и 3D графику, полномасштабные приложения с базами данных и многое другое!
JavaScript сам по себе довольно компактный, но очень гибкий. Разработчиками написано большое количество инструментов поверх основного языка JavaScript, которые разблокируют огромное количество дополнительных функций с очень небольшим усилием. К ним относятся:
Поскольку эта статья должна быть только лёгким введением в JavaScript, мы не собираемся путать вас на этом этапе, подробно рассказывая о том, какая разница между основным языком JavaScript и различными инструментами, перечисленными выше. Вы можете подробно изучить все это позже, в нашей учебной области JavaScript и в остальной части MDN.
Ниже мы познакомим вас с некоторыми аспектами основного языка, и вы также будете играть с несколькими функциями API браузера. Веселитесь!
Предыдущий раздел звучит очень многообещающе, и это на самом деле так — JavaScript является одной из самых перспективных веб-технологий, и когда вы освоитесь и начнёте использовать его, ваши веб-сайты перейдут в новое измерение мощи и креативности.
Тем не менее, с JavaScript немного более сложно освоиться, чем с HTML и CSS. Вам придётся начать с малого, продолжая изучение небольшими шагами. Для начала мы покажем вам, как добавить некоторые основы JavaScript на вашу страницу, чтобы создать "hello world!" пример (стандарт в начальных примерах программирования).
Важно: Если вы не следили за остальным нашим курсом, скачайте этот пример кода и используйте его в качестве стартовой точки.
main.js
. Сохраните его в вашей папке scripts
.index.html
файл и введите следующий элемент на новой строке прямо перед закрывающим тегом </body>
:
<script src="scripts/main.js"></script>
main.js
:
var myHeading = document.querySelector('h1'); myHeading.textContent = 'Hello world!';
index.html
в браузере. Вы должны увидеть что-то вроде этого: Примечание: Причиной, по которой мы поставили элемент {{htmlelement("script")}} в нижней части HTML файла, является то, что HTML-элементы загружаются браузером в том порядке, в котором они расположены в файле. Поэтому, если JavaScript загружается первым и ему нужно взаимодействовать с HTML ниже его, он не сможет работать, так как JavaScript будет загружен раньше, чем HTML, с которым нужно работать. Поэтому, располагать JavaScript в нижней части HTML страницы считается лучшей стратегией.
Итак, ваш заголовок текста был изменён на "Hello world!" с помощью JavaScript. Мы сделали это с помощью вызова функции {{domxref("Document.querySelector", "querySelector()")}}, захватив ссылку на наш заголовок и сохранив её в переменной, названной myHeading
. Это очень похоже на то, что мы делали в CSS с помощью селекторов. Если вы хотите что-то сделать с элементом, то для начала вам нужно его выбрать.
После этого, вы устанавливаете значение переменной myHeading
в {{domxref("Node.textContent", "textContent")}} свойство (которое представляет собой контент заголовка) "Hello world!".
Давайте познакомимся с некоторыми основными возможностями языка JavaScript, чтобы дать вам больше понимания, как это всё работает. Более того, эти возможности являются общими для всех языков программирования. Если вы сможете понять эти основы, вы будете в состоянии начать программировать, как ни в чём не бывало!
Важно: В этой статье попробуйте вводить примеры строк кода в вашей JavaScript консоли, чтобы увидеть, что происходит. Для более подробной информации о JavaScript консоли смотрите статью Откройте для себя браузерные инструменты разработчика.
{{Glossary("Variable", "Переменные")}} — это контейнеры, внутри которых вы можете хранить значения. Вы начинаете с того, что объявляете переменную с помощью ключевого слова var
(не рекомендуется, продолжайте читать, чтобы получить объяснения) или let
, за которым следует любое имя, которым вы захотите её назвать:
let myVariable;
Примечание: Точка с запятой в конце строки указывает, где заканчивается оператор; это абсолютно необходимо, когда вам нужно разделить оператора на одной строке. Однако некоторые люди считают, что хорошая практика - указывать их в конце каждого оператора. Существуют и другие правила, когда вы должны и не должны их использовать - смотрите более подробно в статье ваше руководство по точкам с запятой в JavaScript.
Примечание: вы можете назвать переменную практически как угодно, но есть некоторые ограничения для её имени (смотрите в правилах именования переменных.) Если вы не уверены, вы можете проверить имя вашей переменной, чтобы увидеть корректно ли оно.
Примечание: JavaScript чувствителен к регистру — myVariable
отличается от переменной myvariable
. Если у вас возникают проблемы в вашем коде, проверьте регистр!
Примечание: Для получения более подробной информации о разнице между var и let, смотрите: Разница между var и let.
После объявления переменной вы можете присвоить ей значение:
myVariable = 'Bob';
Вы можете сделать обе эти операции на одной и той же строке, если вы захотите:
var myVariable = 'Bob';
Вы можете получить значение, просто вызвав переменную по имени:
myVariable;
После установки значения переменной вы можете изменить его позже:
var myVariable = 'Bob'; myVariable = 'Steve';
Обратите внимание, что переменные имеют разные типы данных:
Переменная | Пояснение | Пример |
---|---|---|
{{Glossary("String")}} | Последовательность текста, называемая строкой. Чтобы указать, что это значение является строкой, вы должны заключить его в кавычки. | var myVariable = 'Bob'; |
{{Glossary("Number")}} | Числа. Числа не имеют кавычек вокруг них. | var myVariable = 10; |
{{Glossary("Boolean")}} | Значение True(Правда)/False(Ложь). Слова true и false специальные ключевые слова в JS, и не нуждаются в кавычках. |
var myVariable = true; |
{{Glossary("Array")}} | Массив, который позволяет хранить несколько значений в одной ссылке. | var myVariable = [1,'Bob','Steve',10]; Обратиться к каждому элементу массива можно так: myVariable[0] , myVariable[1] , и т.д. |
{{Glossary("Object")}} | В принципе, что угодно. Все в JavaScript является объектом, и может храниться в переменной. Имейте это в виду, пока вы учитесь. | var myVariable = document.querySelector('h1'); Все это из вышеприведённых примеров. |
Так для чего нам нужны переменные? Что ж, переменные должны были сделать что-нибудь интересное в программировании. Если значения не могли бы изменяться, то вы не могли бы ничего сделать динамическим, например, персонализировать приветственное сообщение или сменить изображение, отображаемое в галерее изображений.
Комментарии - это, по сути, короткие фрагменты текста, которые могут быть добавлены в код, и которые игнорируются браузером. Вы можете поместить комментарии в JavaScript-код, так же как вы делали это в CSS:
/* Всё, что находится тут - комментарий. */
Если ваш комментарий не содержит переноса строк, то зачастую легче поставить две косые черты, как тут:
// Это комментарий
{{Glossary("operator")}} — это математический символ, который производит результат, основанный на двух значениях (или переменных). В приведённой ниже таблице вы можете увидеть некоторые из наиболее простых операторов, наряду с некоторыми примерами, которые опробуете в JavaScript консоли.
Оператор | Пояснение | Символ(ы) | Пример |
---|---|---|---|
Сложение (Конкатенация) | Используется для сложения двух чисел или склеивания двух строк вместе. | + |
6 + 9; |
Вычитание, Умножение, Деление | Они делают то, чего вы от них ожидаете в математике. | - , * , / |
9 - 3; |
Присваивание | Вы уже это видели: он присваивает значение переменной. | = |
var myVariable = 'Bob'; |
Равенство (Тождество) | Делает проверку, если увидит, что два значения равны друг другу, то возвращает результат true /false (Boolean). |
=== |
var myVariable = 3; |
Отрицание (Неравенство) | Возвращает логически противоположное значение, которое ему предшествует; превращает true в false , и т.д. Когда используется вместе с оператором равенства, оператор отрицания проверяет, являются ли два значения не равными. |
! , !== |
Основное выражение
Здесь мы проверяем "
|
Существует намного больше операторов для изучения, но этих пока хватит. Смотрите их полный список в разделе выражения и операторы.
Примечание: Смешивание типов данных может привести к некоторым неожиданным результатам при выполнении вычислений, поэтому будьте осторожны, правильно ссылайтесь на ваши переменные, чтобы получать ожидаемые результаты. Например, введите "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
.
{{Glossary("Function", "Функции")}} - способ упаковки функциональности, которую вы хотите использовать повторно. Всякий раз, когда вам нужна определённая процедура, вы можете просто вызвать функцию по её имени, а не переписывать весь код каждый раз. Вы уже видели некоторые функции, описанные выше, например:
var myVariable = document.querySelector('h1');
alert('hello!');
Эти функции, document.querySelector
и alert
, встроены в браузер для того, чтобы вы использовали их всякий раз, когда вам это необходимо.
Если вы видите что-то, что выглядит как имя переменной, но имеет после него скобки — ()
, скорее всего, это функция. Функции часто принимают {{Glossary("Argument", "аргументы")}} — биты данных, которые им необходимы для выполнения своей работы. Они находятся в скобках, и разделяются запятыми, если присутствует более одного аргумента.
Например, функция alert()
вызывает всплывающий блок, появляющийся в окне браузера, но мы должны дать ему строку в качестве аргумента, чтобы сказать функции, что писать во всплывающем блоке.
Хорошая новость заключается в том, что вы можете определить свои собственные функции — в следующем примере мы напишем простую функцию, которая принимает два числа в качестве аргументов и умножает их:
function multiply(num1,num2) { var result = num1 * num2; return result; }
Попробуйте запустить вышеупомянутую функцию в консоли, затем попробуйте изменить аргументы, например:
multiply(4,7); multiply(20,20); multiply(0.5,3);
Примечание: Инструкция return
сообщает браузеру, что нужно вернуть переменную result
из функции, которую можно будет использовать. Это необходимо потому, что переменные, определённые внутри функций, доступны только внутри этих функций. Это называется {{Glossary("Scope", "областью видимости")}} переменной. (Читайте больше об области видимости переменных.)
Для создания действительной интерактивности на веб-сайте вам необходимы события. События — это структура, которая следит за тем, что происходит в браузере, а затем позволяет вам запускать код в ответ на это. Наиболее очевидным является событие клика, которое вызывается браузером, когда мы щёлкаем по чему-то мышью. Для демонстрации этого события введите следующую команду в вашу консоль, а затем щёлкните по текущей веб-странице:
document.querySelector('html').onclick = function() { alert('Ouch! Stop poking me!'); }
Существуют множество способов прикрепить событие к элементу. Здесь мы выбираем {{htmlelement("html")}} элемент и устанавливаем ему обработчик свойства onclick
анонимной функцией (т.е. безымянной) которая содержит код, который мы хотим запустить для события клика.
Обратите внимание, что
document.querySelector('html').onclick = function() {};
эквивалентно
var myHTML = document.querySelector('html'); myHTML.onclick = function() {};
Просто так короче.
Теперь, когда мы прошли некоторые основы JavaScript, давайте добавим несколько крутых несложных функций в пример нашего сайта, чтобы дать вам некоторое представление о принципах работы.
В этом разделе мы добавим ещё одно изображение на наш сайт и добавим некоторый простой JavaScript для переключения между двумя изображениями, когда по ним щёлкнули.
images
.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'); } }
index.html
в браузере. Теперь, когда вы щёлкните по изображению, оно должно измениться на другое!Итак, мы сохраняем ссылку на наш элемент {{htmlelement("img")}} в переменной myImage
. Далее, мы создаём этой переменной обработчик события onclick
с анонимной функцией. Теперь, каждый раз, когда на этот элемент изображения щёлкнут:
src
изображения.src,
равен ли путь к исходному изображению:
src
на путь ко 2-му изображению, заставляя другое изображение загружаться внутри элемента {{htmlelement("image")}}.src
, возвращаясь к первоначальному пути изображения, каким он был изначально.Далее мы добавим немного другого кода, чтобы изменить заголовок страницы на персонализированное приветственное сообщение, когда пользователь впервые зайдёт на сайт. Это приветственное сообщение будет сохраняться, когда пользователь покинет сайт, а позже вернётся - мы сохраним его с помощью Web Storage API. Мы также включим возможность изменить пользователя и, следовательно, приветственное сообщение, в любое время, когда это будет необходимо.
index.html
, добавьте следующую строку перед элементом {{htmlelement("script")}}:
<button>Change user</button>
main.js
, добавьте следующий код в конец файла, точно так, как написано - он захватит ссылки на новую кнопку и заголовок, и сохранит их в переменные:
var myButton = document.querySelector('button'); var myHeading = document.querySelector('h1');
function setUserName() {
var myName = prompt('Please enter your name.');
localStorage.setItem('name', myName);
myHeading.textContent = 'Mozilla is cool, ' + myName;
}
Эта функция содержит функцию prompt()
, которая вызывает диалоговое окно, немного похожее на alert()
кроме того, что prompt()
просит пользователя ввести некоторые данные, и сохраняет эти данные в переменной, после того как пользователь нажимает OK. В данном случае, мы просим пользователя ввести его имя. Далее, мы вызываем API под названием localStorage
, который позволяет нам хранить данные в браузере и извлекать их позднее. Мы используем функцию setItem()
из localStorage для создания и хранения данных в свойстве под названием 'name'
, и устанавливаем это значение в переменную myName
, которая содержит имя введённое пользователем. В конце мы устанавливаем textContent
заголовку в виде строки и имени пользователя.if ... else
- мы могли бы назвать это кодом инициализации, поскольку он структурирует приложение при его первой загрузке:
if(!localStorage.getItem('name')) {
setUserName();
} else {
var storedName = localStorage.getItem('name');
myHeading.textContent = 'Mozilla is cool, ' + storedName;
}
Этот блок сначала использует оператор отрицания (логическое НЕ, представленное в виде !) чтобы проверить, существуют ли данные в пункте name
. Если нет, то функция setUserName()
запускается для их создания. Если данные существуют (то есть, пользователь установил его во время предыдущего посещения), мы извлекаем сохранённое имя, с помощью getItem()
и устанавливаем textContent
заголовку в виде строки плюс имя пользователя, так же, как мы делали внутри setUserName()
.onclick
на кнопку. При нажатии кнопки запускается функция setUserName()
. Это позволяет пользователю установить новое имя, всякий раз, когда он захочет, нажатием кнопки:
myButton.onclick = function() { setUserName(); }
Теперь, когда вы впервые заходите на сайт, он попросит вас указать имя пользователя, а затем предоставит вам персональное сообщение. Вы можете изменить имя в любое время, нажав на кнопку. В качестве дополнительного бонуса, поскольку имя хранится внутри localStorage, оно сохраняется после закрытия сайта, сохраняя при этом персонализированное сообщение при следующем открытии сайта!
Если вы следовали всем инструкциям в этой статье, в конечном итоге вы должны получить страницу, которая выглядит примерно так (вы также можете посмотреть нашу версию здесь):
Если вы застряли, вы всегда можете сравнить свою работу с нашим готовым примером кода на Github.
Здесь мы узнали только самую поверхность JavaScript. Если вам понравился этот язык и вы хотите изучить его поглубже, перейдите к нашему разделу изучение JavaScript.
{{PreviousMenuNext("Learn/Getting_started_with_the_web/CSS_basics", "Learn/Getting_started_with_the_web/Publishing_your_website", "Learn/Getting_started_with_the_web")}}