Доброго времени суток, друзья!
В прошлом уроке мы с Вами рассмотрели случаи взаимодействия переменных с типами String(Строка), Number (Число) и Boolean (Логический тип). Кроме этого мы познакомились с результатами взаимодействия этих переменных со специфическими значениями типа Null и Undefined. А так же мы получили новые знания о комментариях в коде, их назначении и форме представления.
По сути нам осталось разобрать:
- Неявное преобразование типов при взаимодействии переменных строкового (String) типа со специфическими значениями: Null и Undefined.
- Неявное преобразование типов при взаимодействии переменных числового (Number) типа со специфическими значениями: Null и Undefined. А так же...
- Неявное преобразование типов при взаимодействии специфических типов Null и Undefined между друг другом.
И я уже было ринулся писать новый урок, начиная с первого пункта, но понял, что выдал уже достаточно информации для того, чтобы Вы сами могли прийти к выводам о результате оставшихся вариантов операций. Нет, правда. На самом деле мы уже рассмотрели неявное преобразование всех перечисленных выше типов переменных и специфических значений. Из прошлых уроков Вы знакомы со всеми необходимыми ассоциациями и нюансами, осталось только поиграться с взаимодействием такого рода переменных в комбинациях, которые мы еще не затронули.
Я думаю, мы вполне можем пойти на такой "оправданный риск", и дать Вам возможность попробовать самим разобраться, поэкспериментировать и выйти из такой задачи победителями. Ну а если возникнут вопросы или еще какие-либо непредвиденные ситуации, или Вы просто захотите поделиться со мной результатами проделанной Вами работы - прошу отписывать в комментариях. Я всегда отвечу.
А пока я предлагаю двигаться дальше и посмотреть какие же еще манипуляции с переменными мы можем осуществлять в JavaScript.
УРОК 10. Другие возможные взаимодействия между переменными.
До сих пор мы рассматривали взаимодействия между переменными в арифметическом аспекте, то есть в разрезе операций сложения, умножения, деления и вычитания. Однако, если бы JavaScript предоставлял нам возможным выполнения только такого рода операций мы бы далеко не ушли. Ну можем мы складывать разные значения переменных или переменных с разными типами ну и что? Это было бы чуть лучше, чем калькулятор. Однако JavaScript, как уже упоминалось в предыдущих уроках - достаточно гибкий язык программирования и предоставляет нам возможности в разы больше, чем просто арифметика. Давайте их рассмотрим.
И первой операцией из этого списка будет операция конкатенации.
(String concatenation) Конкатенация.
Мы не станем останавливать подробно на этой операции по той причине, что заочно мы с ней уже знакомы из предыдущих уроков. Просто раньше мы не применяли к ней ее специфическое название - конкатенация, а заменяли его на схожие термины типа склеивание или соединение.
Для выполнения конкатенации требуется ровно одно условие - все участники этой операции должны быть строками (тип String), либо должны быть превращены в строки путем явного (который мы еще не рассмотрели) или неявного (который мы рассматривали последние три урока)
преобразования типов.
Пример:
var a = 'всем ';
var b = ' голосовчанам ';
var c = ' огромный ';
var d = ' привет';
var e = a + b + c + d;
alert(e);
Сообщение в браузере:
Результатом данной операции будет строка, соединившая в себе все строки участвующие в операции. Думаю, здесь более, чем все просто и понятно. Идем далее.
Операции Increment (Увеличение)/decrement (Понижение).
Это очень интересные и что более важно часто используемые операции. В своём кодовом представлении имеют вид ++
для increment и --
для decrement.
В чем же суть? Значение переменной может увеличиваться или уменьшаться на один. Рассмотрим на практике:
var a = 1;
var b = '2';
var c = null;
var d = true;
// increment (увеличение)
a++;
b++;
c++;
d++;
alert(a);
alert(b);
alert(c);
alert(d);
Давайте разбираться, что здесь происходит. Мы создали четыре переменных с разными типами:
a
- Number, b
- String, d
- Boolean и переменную c
со специфическим значением Null. Ко всем четырем переменным применена операция инкремента, то есть увеличения их значения на единицу.
Вот эта часть на строках 7,8,9,10:
// increment (увеличение)
a++;
b++;
c++;
d++;
Перед тем как заглянуть в браузере и посмотреть на результаты сообщений, давайте попробуем сами определить какие результаты инкрементирования переменных мы увидим.
Итак, инкремент — это увеличение текущего значения переменной на единицу. Давайте проведем эти вычисления, в этом нам помогут наши знания неявного преобразования типа переменных в JavaScript. Важно понимать, что, когда к какой-либо переменной применяется инкремент или декремент, JavaScript всегда будет неявно преобразовывать эту переменную в число (Number). Конечно, за исключением случая, когда инкремент или декремент применяется к переменной, которая уже имеет тип Number.
Вооруженные такой теорией мы можем сделать следующие выводы:
- Переменная
var a = 1;
после операцииa++;
при увеличении на 1 получит в свое значение результат 2. - Переменная
var b = '2';
. Переменная строкового типа. Однако, с цифирным значением. Значит JavaScript в своем неявном преобразовании этой переменной к числу даст ей значение 2. И после операцииb++;
увеличит это преобразованное значение на 1. Получаем 3. - Переменная
var c = null;
. В соответствии с уже известной нами ассоциацией будет преобразована JavaScript'ом в 0. И после операцииb++;
увеличит это преобразованное значение на 1. Получаем 1. - Переменная
var d = true;
. Переменная логического типа. Опять же, в соответствии с уже известной нами ассоциацией будет преобразована JavaScript'ом в 1. И после операцииd++;
увеличит это преобразованное значение на 1. Получаем 2.
Таким образом, мы получили результаты: 2, 3, 1 и 2. Давайте проверим в браузере:
Как можно видеть из сообщений - выводы и логика, приведенная выше, абсолютно верна. Точно такая же логика преобразования переменных и результатов применяется к операциям связанных с операцией decrement (уменьшения). Давайте рассмотрим пример:
var a = 1;
var b = '2';
var c = null;
var d = true;
// decrement (уменьшение)
a--;
b--;
c--;
d--;
alert(a);
alert(b);
alert(c);
alert(d);
И выведем сообщения с результатами в браузере:
Попробуйте, обосновать результаты, приведенные в сообщениях используя логику преобразования переменных, описанную выше. Если столкнетесь с трудностями - напишите вопрос в комментариях, и мы обязательно рассмотрим все подробнее.
Следующий момент, который важно понимать в работе с операциями increment и decrement - это то, что происходит полная замена предыдущего значения переменной на значение новое. То есть важно понимать, что операция a++;
примененная к переменной a
со значением 1 не просто временно увеличит ее значение на единицу но и именно перезапишет его на 2, и если к этой же переменной применить операцию инкремента еще раз то расчеты будут вестись уже не от 1 которую мы явно указали при инициализации переменной а
, а от 2-ки, которая записалась туда после первой операции инкремента. То же самое с последующими применениями операций инкремента или декремента. Они всегда будут отталкивать от последнего перезаписанного значения.
Пример:
var a = 1;
// increment (увеличение)
a++;
alert(a);
a++;
alert(a);
a++;
alert(a);
a++;
alert(a);
Обратите внимание что каждый последующий вызов инкремента увеличивает на единицу не цифру 1, которую мы объявили в первой строке кода, а новое значение, перезаписанное предыдущим инкрементом. Все тоже самое актуально и для операции с декрементом.
А на сегодня все.
Ссылки на предыдущие уроки:
Продолжение следует...
@rassen, Поздравляю!,
Ваш пост был упомянут в моем хит-параде в следующих категориях:
Привет!
Этот пост был выбран Академией Голоса и попал в список программы поддержки качественных образовательных постов.
Ссылка на твой пост будет опубликована в отчете Академии.
Спасибо за полезный контент (ノ◕ヮ◕)ノ*:・゚✧
Очень крутая инициатива! Прямо душа радуется, что на Голосе ведутся образовательные курсы!
жаль, что мне программирование не интересно (=
Могу предположить, что Вам интересны другие направления.
Благодарю за положительный комментарий!
Да, лично мне интересны различные направления, как те в которых я разбираюсь, так и те, в которых я профан. От маркетинга, потенциально, до игры на гитаре, которую я хочу освоить с детства.