Java Script Lesson 01 Ru 1549368275
Java Script Lesson 01 Ru 1549368275
с использованием JavaScript
и библиотеки jQuery
Unit 1
Введение
в JavaScript
Contents
Сценарии, выполняемые на стороне клиента...................... 4
Что такое JavaScript?................................................................ 10
История создания JavaScript.................................................. 12
Различия между JavaScript и Java, JScript, ECMAScript..... 15
Версии JavaScript...................................................................... 17
Понятие Document Object Model.......................................... 20
Понятие Browser Object Model.............................................. 24
Внедрение в HTML документы.
Редакторы кода JavaScript.................................................. 28
Тег <noscript>............................................................................ 32
Основы синтаксиса................................................................. 38
Регистрозависимость...............................................................39
Комментарии..............................................................................41
Ключевые и зарезервированные слова................................42
Переменные. Правила именования переменных............... 45
2
Contents
Типы данных............................................................................ 52
Операторы................................................................................ 57
Арифметические операторы...................................................59
Операторы отношений............................................................62
Логические операторы.............................................................69
Оператор присваивания..........................................................74
Битовые операторы...................................................................80
Приоритет операторов.............................................................85
Оператор typeof.........................................................................88
Задание для самостоятельной работы.................................90
3
Unit 1. Введение в JavaScript
Сценарии, выполняемые
на стороне клиента
Развитие языка разметки гипертекста HTML при-
вело к совсем иному взгляду на понятие «текст» и его
эволюцию — «гипертекст». Первоначально в структуру
теста были введены дополнительные сущности (entities),
отделяемые от основного текста так называемыми тега-
ми. Текст начал разделяться на, собственно, сам текст
(пассивный текст) и гипертекст — текстовые элементы,
которые несут в себе некие управляющие инструкции.
Для выполнения этих инструкций пришлось моди-
фицировать средства просмотра документов, точнее, уже
гипер-документов. Выражаясь современным языком, по-
явились браузеры — программы, способные отделить
обычный текст от гипертекста и обеспечить функцио-
нальность последнего.
Задачами первых тегов служили простейшее оформ-
ление текста (<b>, <i> и т.п.), а также обеспечение ссылок
на различные части документа или на другие документы
(<a>). Закон возрастающих потребностей никто не отме-
нял и от гипер-составляющей стали хотеть все большего
и большего.
На сегодня мы имеем сложнейшую структуру HTML
документов, позволяющих бесконечное вложения объек-
тов в другие объекты, каскадное применение (и отмена)
стилей отображения с собственным языком CSS, под-
держку событий наведения мыши (::hover) и пользова-
тельской активности (::visited).
4
Сценарии, выполняемые на стороне клиента
5
Unit 1. Введение в JavaScript
Рисунок 1
Рисунок 2
Для лучшей совместимости программ с различными
устройствами параллельно развивалась технология, ус-
ловно называемая транслирующей. Исходный код при
6
Сценарии, выполняемые на стороне клиента
7
Unit 1. Введение в JavaScript
Рисунок 3
В результате, наиболее логичным решением стало
оставить внедряемую в HTML документ программу
в виде ее исходного кода (изначального текста), а в брау-
зер добавить специальное средство (интерпретатор), вы-
полняющее программу для данного конкретного устрой-
ства, на котором браузер установлен.
В отличие от программ, которые компилируются (в ис-
полняемый код) или транслируются (в байт-код) и гото-
вы к исполнению, программа в виде исходного кода (тек-
8
Сценарии, выполняемые на стороне клиента
9
Unit 1. Введение в JavaScript
10
Что такое JavaScript?
11
Unit 1. Введение в JavaScript
История создания
JavaScript
Популярность и распространенность JavaScript со-
провождается широким и детальным описанием его
истории и эволюции. Вы можете с легкостью прочитать
в Интернете очерки об авторах этого языка, а также за-
метки самих авторов о процессе его создания, о прежних
названиях языка и о причинах их смены. В рамках наше-
го урока выделим лишь некоторые основные моменты,
связанные с появлением и развитием JavaScript.
В первой половине 90-х годов ХХ века вычислитель-
ная техника и сетевое обеспечение достигли такого уров-
ня, что связь удаленных компьютеров стала доступна
массовому потребителю. Из секретных военных техноло-
гий сети перешли к мирному использованию. Оцененное
пользователями удобство общения по электронной по-
чте и мессенджерам перевело линию развития общества
в информационно-коммуникационную стезю, а перед
разработчиками поставило новые задачи по созданию
средств разработки сетевых ресурсов.
Дело в том, что существовавшие на то время средства
программирования были не очень удобными для разра-
ботки сетевых приложений. Хотя сделать сайт можно
практически на любом языке, но лучше, когда это дела-
ется при помощи специальных средств.
В середине 90-х годов появились несколько таких
средств: РНР, Java, Ruby, ASP (использованы современ-
ные названия), а также были созданы расширения для
12
История создания JavaScript
13
Unit 1. Введение в JavaScript
14
Различия между JavaScript и Java, JScript, ECMAScript
15
Unit 1. Введение в JavaScript
16
Версии JavaScript
Версии JavaScript
Для указания версий языка JavaScript применяется не-
сколько различных обозначений. Одним из них является
внутренняя система нумерации версий. Согласно с этой
системой, для самой первой, оригинальной сборки языка
в далеком 1996 году была введена версия «1.0». Последней из
принятый на данный момент версий является «1.8», а точ-
нее — «1.8.5». Работы над версией «2.0» ведутся, но окон-
чательно версия не утверждена. Версии сменялись в связи
с появлением новых типов браузеров и зачастую кроме
цифры версии указывают название браузера, из-за кото-
рого версия была обновлена. Детально про историю версий
можно почитать, например, на Википедии по ссылке.
Параллельно с внутренними версиями JavaScript раз-
виваются стандарты языка ECMAScript. Они обозначают-
ся сокращением «ES», после которого указывается номер
версии. Версия «ES1» была выпущена в 1997 году, «ES2» —
в 1998 году, «ES3» — в 1999 году, а версия «ES4» — так
и не была принята из-за слишком радикальных измене-
ний, предложенных для внесения. Эти версии мораль-
но устарели и имеют лишь историческое значение, как,
впрочем, и версии 1.0-1.7 JavaScript, соответствующие
этим стандартам.
Прорыв в стандартизации языка произошел спустя
10 лет с принятием в 2009 году версии «ES5». Этот стан-
дарт просуществовал 6 лет, был реализован всеми бра-
узерами и может считаться основой для изучения язы-
ка JavaScript реализовавшего ES5, начиная с версии 1.8,.
17
Unit 1. Введение в JavaScript
18
Версии JavaScript
19
Unit 1. Введение в JavaScript
Понятие
Document Object Model
Разобравшись с тем, что такое язык JavaScript, обра-
тим наше внимание на то, с чем этот язык работает. Как
уже упоминалось, основным назначением JavaScript явля-
ется работа с веб-страницей на стороне клиента, то есть
с данными, отображаемыми на вкладке браузера. В тер-
минологии JavaScript эти данные, полученные от сервера,
обобщаются термином «документ» (document).
Исторически, разные браузеры по-разному строили
документ и его составные части. Это усложняло разра-
ботку клиентских сценариев программистами и требова-
ло введения некоторой унификации. Организация W3C
(«World Wide Web Consortium»), основанная для поддер-
живания и развития стандартов веб-технологий, раз-
работала и опубликовала стандарт, устанавливающий
единые требования к составу документа.
Стандарт ввел понятие «Объектная модель доку-
мента» DOM (Document Object Model) и обобщил способ
организации документа в виде взаимосвязанной сети
объектов. Для того чтобы понять смысл этой сетевой
организации рассмотрим следующий фрагмент HTML
кода в виде ненумерованного списка:
<ul>
<li>first element</li>
<li> second element
<span>child Node 0</span>
<a>child node 1</a>
20
ПонятиеDocument Object Model
21
Unit 1. Введение в JavaScript
Рисунок 4
Понятие и содержание документа в модели DOM яв-
ляется более широким, чем его HTML содержание. Убе-
димся в этом практически. Запустите браузер, откройте
новую вкладку и перейдите на сайт. Когда сайт загру-
зится, откройте консоль разработчика — нажмите на
клавиатуре кнопку «F12» и в появившемся окне выберите
вкладку «Console». Введите в консоли слово document
и нажмите «Enter». Вы увидите ответ «#document» и сим-
вол раскрытия группы в виде треугольника слева от
надписи. Нажмите мышью на этот треугольник, после
чего раскроется детальное описание объекта (см. рис. 5).
Как видно, это знакомый Вам HTML код страницы.
Исследуем состав документ более детально. Введите
еще раз document и сразу после него поставьте точку
(пробел не добавлять). Появится выпадающая подсказ-
ка с огромным перечнем составных частей документа.
Выберите мышью или стрелками клавиатуры, например,
свойство URL и после выбора нажмите «Enter». Появится
ссылка на загруженный сайт (см. рис. 5).
22
ПонятиеDocument Object Model
Рисунок 5
Анализируя состав объекта «document» можно сде-
лать вывод, что кроме HTML он содержит разнообразную
информацию о веб-странице. Детальнее о различных со-
ставных частях документа мы будет говорить в последу-
ющих уроках.
Отметим, что стандарт DOM — это довольно объ-
емная информация, требующая для своего понимания
навыков программирования и опыта разработки веб-ре-
сурсов. На данном вводном этапе подытожим, что DOM
позволяет представить веб-страницу как программный
объект, собирающий в себе все необходимые данные
в виде дерева объектов-узлов и дополнительных пара-
метрах страницы. Более того, структура и имена неко-
торых узлов устанавливаются стандартами и являются
одинаковыми во всех браузерах.
23
Unit 1. Введение в JavaScript
Понятие
Browser Object Model
Рассмотренный в предыдущем разделе объект «до-
кумент» группирует и представляет доступ к основным
данным, размещенным на вкладке браузера. Эти данные
должны быть одинаковыми для различных браузеров,
различных пользователей, различных устройств, чтобы
все посетители сайта видели одну и ту же информацию.
Кроме данных, являющихся общими для всех посе-
тителей, конкретная вкладка конкретного браузера имеет
свои данные, уникальные для каждого конкретного поль-
зователя и его браузера, например, свою собственную
«историю» — перечень ранее открытых вкладок. Если
в браузере выполнить команду «вернуться к предыдущей
странице», то ее результат не будет зависеть от свойств
и данных сайта, а только от браузера, а точнее, его вклад-
ки. Более того, эти данные меняются от запуска к запуску,
от закрытия и открытия вкладок.
Для того чтобы не нарушать стандартизованную мо-
дель документа (DOM) и в то же время иметь возможность
хранить локальные (собственные) данные, в браузере со-
здана своя объектная модель ВОМ (Browser Object Model).
Эта модель является некоторой оболочкой над объектом
«document», на ряду с которым появляются объекты, от-
вечающие за параметры, относящиеся только к браузеру,
и напрямую не связанные с загруженной страницей.
Описанные данные собирает в себе объект «window»,
представляющий основу объектной модели браузера. На
24
Понятие Browser Object Model
Рисунок 6
Отметим дополнительно, что ВОМ проявляется еще
и в том, что «window» играет роль глобального объекта —
общего пространства для всех других объектов, причем
как для HTML, так и для JavaScript.
Со стороны JavaScript этому объекту принадлежат пе-
ременные, создаваемые пользователем (детальнее в раз-
деле «Область видимости переменной»).
Также в объект «window» попадают все элементы
HTML, которым присвоены идентификаторы (атрибут
id). Для того чтобы в этом убедиться создайте новый
HTML файл, в котором создайте параграф: (код также
доступен в папке Sources — файл js1_1.html).
<p id=p1>Paragraph with id = p1</p>
25
Unit 1. Введение в JavaScript
Рисунок 7
Введите еще раз «р1» и поставьте точку. Появится
подсказка о составе объекта, соответствующего пара-
графу «р1». Выберите поле innerHTML. Добавьте знак
«=» и в кавычках напишите «New text». В итоге строка
в консоли должна выглядеть как
p1.innerHTML=New text
Рисунок 8
Как мы смогли убедиться, наличие у HTML элемен-
та идентификатора (атрибута id) приводит к созданию
в объекте «window» нового объекта с именем как иден-
тификатор.
Тот факт, что переменные JavaScript и объекты HTML
с заданным атрибутом «id» попадают в один объект ВОМ
26
Понятие Browser Object Model
27
Unit 1. Введение в JavaScript
Внедрение
в HTML документы.
Редакторы кода JavaScript
Будучи специально разработанными для внедрения
в HTML документы сценарии JavaScript включаются в них
довольно просто. Как уже упоминалось, никаких допол-
нительных действий по настройке браузера совершать
не требуется, не нужно подключать расширения, допол-
нения и т.п.
Внедрить код сценария в HTML документ можно дву-
мя способами. Первый — указать теги <script></script>
в теле документа и между ними поместить код. Второй —
написать код в виде отдельного файла (например, file.js)
и подключить его в документ, указывая файл-источник
<script src="file.js"></script>.
Обычно отдельными файлами создаются большие
по размеру скрипты, прямое указание которых в HTML
документе будет мешать его чтению или редактированию.
Также возможно указывать удаленный файл, используя
ссылку в качестве источника. Чаще всего в отдельных
файлах описываются дополнительные функции и не ис-
пользуются сценарии, которые выполняются сразу при
загрузке файла в документ.
Непосредственно в HTML документе размещают
относительно небольшие сценарии, выполняющиеся
при его загрузке и влияющие на свойства страницы и ее
отображение. В этих сценариях могут использоваться
28
Внедрение в HTML документы. Редакторы кода JavaScript
29
Unit 1. Введение в JavaScript
<!doctype html>
<html>
<head>
</head>
<body>
<script>
console.log("Hello from script");
</script>
</body>
</html>
30
Внедрение в HTML документы. Редакторы кода JavaScript
Рисунок 9
Как мы увидели, скрипт внедряется в документ при
помощи тегов <script> </script>. При загрузке страницы
в браузере скрипт автоматически выполняется без допол-
нительного вмешательства с нашей стороны. Также мы
познакомились с командой вывода в консоль «console.
log()», применяемой для вывода технической информа-
ции и используемой для отладки сценариев.
31
Unit 1. Введение в JavaScript
Тег <noscript>
Если мы внедряем сценарии в нашу страницу, то мы
хотим быть уверенными в том, что они будут выполне-
ны в полном объеме. Иногда от выполнения скриптов
зависит не только красота оформления страницы, а ее
функциональность и взаимодействие с пользователем.
Что же делать, если он (пользователь) все-таки отключит
выполнение скриптов в браузере, не подтвердит их вклю-
чение по сообщению (см. рис. выше) или его устройство
вообще не поддерживает работу JavaScript? Для возмож-
ности решения подобных задач предусмотрен специаль-
ный HTML тег <noscript>.
Этот тег может применяться как в заголовочной части
HTML документа (<head>), так и в его теле (<body>). Всё,
что заключено между открывающим и закрывающим те-
гами <noscript> и </noscript> будет обрабатываться только
в том случае, если выполнение скриптов невозможно по ка-
ким-либо причинам. В обратном случае, содержимое этих
тегов будет проигнорировано и не будет обрабатываться.
Хотя отключение скриптов или отсутствие под-
держки JavaScript крайне маловероятно, тем не менее,
хорошим стилем разработки веб-ресурсов должно быть
предусмотрено и такой вариант настройки конечного
устройства. Давайте рассмотрим простейший пример,
иллюстрирующий проверку работоспособности клиент-
ских сценариев.
Создайте новый HTML файл. Скопируйте или напе-
чатайте в него следующее содержимое (код также досту-
пен в папке Sources — файл js1_3.html).
32
Тег <noscript>
<!doctype html>
<html>
<head>
<noscript>
<style>
#msg{
position:absolute;
left:0;
top:0;
width:100%;
height:100%;
background:#bbb;
text-align:center;
padding-top:49vh;
}
</style>
</noscript>
<style>
*{
font-size:30px;
}
</style>
</head>
<body>
<div id="msg">Allow scripts to use this page
</div>
<script>
window.msg.innerHTML =
"JavaScript enabled. All right.";
</script>
</body>
</html>
33
Unit 1. Введение в JavaScript
34
Тег <noscript>
Рисунок 10
Теперь самое аккуратное — отключаем выполнение
скриптов в браузере. В браузере Chrome наберите в адрес-
ной строке «chrome://settings/content/javascript» и нажми-
те на переключатель «Allowed (recommended)» который
должен поменяться на «Blocked».
В браузере «Opera» настройки очень похожи. Набе-
рите «opera://settings/content/javascript» и увидите такой
же переключатель.
В браузере Mozilla Firefox наберите «about:config», за-
тем в строке поиска введите «javascript.enabled» и сделайте
двойной щелчок на найденном поле, чтобы значение «de-
fault-true» поменялось на «modified-false» (обратное пере-
ключение также совершается двойным щелчком мыши).
В браузере «Edge» настройки меняются через свой-
ства политики безопасности операционной системы.
В браузере «Safari» перейдите в меню «Настройки»
и снимите отметку с поля «Включить JavaScript».
Рисунок 11
35
Unit 1. Введение в JavaScript
Рисунок 12
Еще раз отметим, что предусмотренная реакция на-
шего документа на возможное отключение JavaScript
в браузере является хорошим стилем разработки и ре-
комендуется для внедрения в реальных проектах. Ко-
нечно, лучше всего предусмотреть нормальную рабо-
тоспособность сайта и при отключенной поддержки
сценариев, но, если это не удается, то, по крайней мере,
нужно выдать соответствующее предупреждение для
пользователя.
Убедитесь в том, что популярные ресурсы «выдержи-
вают» отключение JavaScript. Пока еще в браузере выклю-
чена поддержка сценариев, перейдите на сайт Академии
Шаг, Фейсбука или Гугла. Обратите внимание на то, что
загрузка сайтов проходит нормально и общая функци-
ональность сохраняется, хоть и с некоторыми ограни-
чениями. Во многом это обеспечивается применением
тега <noscript>.
36
Тег <noscript>
37
Unit 1. Введение в JavaScript
Основы синтаксиса
Разобравшись с предназначением языка JavaScript
и способами внедрения его в состав HTML документа,
перейдем к более подробному изучению самого языка.
Наверно, это может показаться странным, но языки
программирования во многом похожи на языки обыч-
ного человеческого общения. По формальному определе-
нию, язык — это знаковая система, предназначенная для
передачи смысловой информации. И язык программи-
рования, и язык общения — это средства для подобных
целей — передачи информации путем использования
специальных символов, слов и их комбинаций. То, что
в языке общения называют фразой, в JavaScript называ-
ют скриптом. Аналогом литературного произведения на
компьютерном языке является программа.
Исходя из основного определения, любой язык состо-
ит из двух основных аспектов — синтаксического и се-
мантического. Семантический аспект касается передачи
смысла, а синтаксический — правил использования сим-
волов и слов. Например, мы хотим вывести числа от 1 до
10 на экран — это смысл, семантика программы. То, как
мы это сделаем, как напишем программу — это синтаксис
или синтаксический аспект.
Забегая наперед отметим, что ошибки в програм-
мах также делятся на синтаксические и семантические.
Синтаксические ошибки возникают, если неправильно
использовать языковые знаки — опечататься в выраже-
нии или неправильно расставить «знаки препинания»,
38
Основы синтаксиса
39
Unit 1. Введение в JavaScript
40
Основы синтаксиса
Комментарии
Кроме исполнимого кода в состав программы вклю-
чаются еще и авторские примечания — комментарии. Их
можно сравнить с «заметками на полях» — дополнитель-
ной информацией, никак не относящейся и не влияющей
на содержание основного произведения, но выражающей
мнение автора или читателя о нем.
// this function calculates mean value
function calcMVal(){….}
41
Unit 1. Введение в JavaScript
/*******************
Computation
*******************/
…
…
/*******************
Displaying
*******************/
…
…
42
Основы синтаксиса
43
Unit 1. Введение в JavaScript
44
Переменные. Правила именования переменных
Переменные.
Правила именования
переменных
Важнейшей частью программирования, послужив-
шей когда-то причиной перехода от первого ко второму
поколению языков, являются переменные. В формаль-
ном определении переменная — это именованная об-
ласть памяти.
В простом представлении переменная отвечает за
возможность сохранять данные и обеспечивает доступ
к ним во время работы программы. В самом простом
случае переменную можно сравнить с памятью на кальку-
ляторе: нажали кнопку «М» и результат где-то сохранил-
ся. При необходимости этот результат можно из памяти
извлечь и использовать в других расчетах.
При программировании реальных задач довольно
часто приходится иметь дело с промежуточными ре-
зультатами и дополнительными величинами. Для при-
мера рассмотрим процесс сложения чисел «в столбик».
Пусть надо сложить 85 и 77. Складывая последние циф-
ры чисел (5 и 7), мы получаем 12, значит «два пишем,
один в уме».
На втором этапе мы складываем уже три цифры: 8,
7 и единицу, запомненную на предыдущем этапе. По-
лучаем 16 и снова «6 пишем, 1 в уме». На третьем этапе
запомненную единицу мы записываем в первую позицию
конечного результата.
45
Unit 1. Введение в JavaScript
Рисунок 13
Говоря «в уме» мы подразумеваем, что нам как-то нуж-
но запомнить (а лучше записать) единицу, которую следует
учесть в дальнейших расчетах. Если мы хотим научить
компьютер сложению в столбик, необходимо предусмот-
реть место, где мы будем запоминать (записывать) данные
о переносе (запоминание единицы называется переносом).
Для компьютера «в уме» означает «в оперативной памяти».
Не имея специального свободного места в памяти, данные
просто негде будет хранить. Это место в памяти, с точки
зрения программы, и является переменной.
На каждом последующем этапе сложения, может
быть, снова придется запоминать единицу, а, возможно,
и нет, если сумма цифр будет меньше 10. Выделять для
новых данных отдельное место в памяти необходимости
нет, так как после использования запомненной единицы
один раз ее можно «забывать», то есть заменять следу-
ющим результатом «запоминания». Это еще раз подчер-
кивает смысл слова «переменная» — ее значение может
меняться (переменяться) в процессе работы программы.
Когда значение переменной меняется, оно заменяет
собой предыдущее значение, хранимое в памяти. Старое
46
Переменные. Правила именования переменных
47
Unit 1. Введение в JavaScript
48
Переменные. Правила именования переменных
Допустимые
Выражение Причина запрета
варианты
last-element используется символ операции вычи- lastElement
тания «-» last_element
[data] используются символы оператора Data
разыменования «[]» _data_
2GB имя начинается с цифры _2GB
GB_2
isOdd? используется символ тернарного опе- isOdd
ратора «?» is_Odd
-=*!*=-, :-) все возможные нарушения -
49
Unit 1. Введение в JavaScript
50
Переменные. Правила именования переменных
51
Unit 1. Введение в JavaScript
Типы данных
Структура памяти компьютеров устроена таким обра-
зом, что в одной ячейке памяти может храниться только
два возможных значения — «0» и «1», образующих один
бит информации. Для удобства работы с памятью, чтобы
не обращаться к каждому биту отдельно, биты группиру-
ются в байты — блоки, обрабатываемые в памяти за одну
операцию чтения или записи. Обычно предполагается,
что байт состоит из восьми бит, хотя бывают и откло-
нения от указанного количества в специализированных
устройствах.
Повторим выводы предыдущего раздела, что пере-
менная — это именованная область памяти, предназна-
ченная для хранения некоторых данных. И объединим это
утверждение с тем фактом, что в памяти могут храниться
только блоки единиц и нулей. Выходит, что любая пере-
менная сопоставляется с некоторой последовательностью
из «0» и «1» в некотором участке памяти, и других данных
содержать в себе просто физически не может.
Однако в задачах прикладного программирования
требуются другие данные — числа, символы, даты и т.п.
Для того чтобы обеспечить работу с понятными нам дан-
ными, нужны определенные правила, которые будут от-
вечать за преобразование битовой последовательности,
сохраненной в памяти (в переменной), к другому пред-
ставлению. Подобные правила нужны и для операций
с разными данными, ведь сложение чисел и сложение
дат — это разные операции.
52
Типы данных
53
Unit 1. Введение в JavaScript
54
Типы данных
55
Unit 1. Введение в JavaScript
56
Операторы
Операторы
В одном из вариантов, компьютерную программу
можно представить себе как набор некоторых действий,
выполнение которых приведет к решению определенного
задания, ради которого программа и создается. Действия,
из которых состоит программа, могут быть разнообраз-
ными, но, конечно же, выполнимыми для того устрой-
ства, на котором будет выполняться программа. С одной
стороны, всё, что может процессор, так это преобразовы-
вать одни последовательности нулей и единиц в другие по
своим сложным внутренним правилам. С другой сторо-
ны, языки программирования для того и создаются, что-
бы скрыть от программиста сложные правила, заменив
их более-менее понятными для человека выражениями.
Путь к упрощению, «очеловечиванию» инструкций
языка может привести к избыточности выражений, ха-
рактерных для языков общения. Разные выражения при
этом становятся близкими по смыслу и несут практиче-
ски одинаковый посыл. Учитывая тот факт, что каждое
из таких выражений должно быть переведено на «язык
процессора», возникает вполне резонный вопрос об оп-
тимальности: можно ли выделить некоторую основу,
базовый набор выражений из которых можно строить
любые другие выражения?
Ответом на этот вопрос послужило появление опе-
раторов. Операторы или программные инструкции
(англ. statements) представляют собой синтаксические
конструкции (выражения) языка, описывающие опре-
57
Unit 1. Введение в JavaScript
58
Операторы
59
Unit 1. Введение в JavaScript
60
Операторы
61
Unit 1. Введение в JavaScript
2
f = x+ ⋅y.
x +1
Программист использовал следующий код, найдите
в нем ошибку: f = x + (2 / x + 1 ) * y.
Ответ: приоритет операции деления выше, чем у опе-
рации сложения. Значит блок (2 / x + 1) эквивалентно
формуле
2
+1
x ,
где двойка делится только на «х» и к результату добавля-
ется единица. В условии задания требовалось рассчитать
блок
2
x +1 ,
то есть выражение «х+1» нужно взять в скобки при деле-
нии. Правильное решение: f = x + 2 / (x + 1 ) * y.
Операторы отношений
После проведения алгебраических расчетов может
возникнуть следующая задача — сравнить полученные
результаты между собой или с их ожидаемым значе-
нием. Например, один банк предлагает 1% на депозит
каждый месяц, а другой повышает ставку с 0.9% до 1.1%
в течение года. Какой из банков окажется выгоднее по
итогам года?
Проведя расчеты, окажется, что при первой схеме
начислений мы получим х1=12.6825% годовых, тогда как
при второй х2=12.6821%. Как определить что выгоднее?
Ответ очевиден: нужно сравнить результаты (х1 и х2)
62
Операторы
63
Unit 1. Введение в JavaScript
64
Операторы
Рисунок 14
Строгие операции проверяют равенство при помощи
выражения «===», а неравенство — «!==». В этом случае
операнды разного типа в любом случае не могут быть
равными между собой, даже если содержат подобные
значения. Используйте консоль, чтобы убедиться, что
все предыдущие выражения приведут к отрицательному
результату (false) (рис. 15).
Рисунок 15
Понятие строгой и нестрогой операции применяется
только к сравнениям. Операции отношений не имеют
такого деления. Для проверки отношений двух операндов
применяются следующие операторы:
65
Unit 1. Введение в JavaScript
66
Операторы
Рисунок 16
Рисунок 17
67
Unit 1. Введение в JavaScript
Рисунок 18
Однако описанный прием имеет некоторые ограниче-
ния. Если в состав строки в переменной х будут включе-
ны не-цифры, то выражение «+х» приведет к результату
«NaN». Отметим, что при работе с CSS свойствами до-
68
Операторы
69
Unit 1. Введение в JavaScript
70
Операторы
71
Unit 1. Введение в JavaScript
72
Операторы
73
Unit 1. Введение в JavaScript
Оператор присваивания
Все рассмотренные в предыдущих разделах операции
приводят к получению некоторого результата. Этот ре-
зультат может быть выведен в консоль или использован
в других операциях.
Бывают случаи, когда полученный результат необ-
ходимо сохранить для использования в дальнейших
блоках программы. Например, пользователь ввел свое
имя и при всех дальнейших обращениях к нему нужно
это имя указывать. Значит, в программе это имя следует
74
Операторы
75
Unit 1. Введение в JavaScript
76
Операторы
Рисунок 19
Данные, которые нужно сохранить (значение), преоб-
разовываются в двоичный вид с учетом того типа данных,
который имеет операция или значение. Напомним, что
в некоторых случаях указать тип данных можно и для
самого значения, например запись «х=7» задает значение
в виде числа (Number), тогда как запись «x="7"» указывает
на строковое (String) значение результата.
После преобразования двоичное представление ре-
зультата перемещается в ту ячейку памяти, за которую
77
Unit 1. Введение в JavaScript
78
Операторы
79
Unit 1. Введение в JavaScript
80
Операторы
81
Unit 1. Введение в JavaScript
82
Операторы
x AND y ( x & y )
y x 0 1
0 0 0
1 0 1
x XOR y ( x ^ y )
y x 0 1
0 0 1
1 1 0
Рисунок 20
83
Unit 1. Введение в JavaScript
84
Операторы
Приоритет операторов
Если в одном выражении встречается несколько
различных операций, то их порядок выполнения регу-
лируется «приоритетом» — некоторой важностью дан-
ной операции. Немного о приоритете мы говорили при
рассмотрении математических выражений. В частности
было указано, что операции умножения и деления вы-
полняются раньше операций сложения и вычитания.
Это вполне согласуется с правилами обычной алгебры.
В случае если в выражении появляются операции
разных групп (математические, логические, битовые
и т.д.), то порядок их выполнения (приоритет) стано-
вится более сложным и последовательным. Этот по-
рядок можно представить в виде следующей таблицы.
Чем выше в таблице операция, тем раньше она будет
выполнена в одном и том же выражении. Операции
одинакового приоритета выполняются слева направо
одна за другой.
85
Unit 1. Введение в JavaScript
86
Операторы
87
Unit 1. Введение в JavaScript
будет вычислено
(!profession) == "banker"
88
Операторы
89
Unit 1. Введение в JavaScript
90
Операторы
91
Unit 1.
Введение в JavaScript
© Денис Самойленко.
© Компьютерная Академия «Шаг», www.itstep.org.