Стать программистом. Часть 10. Основы JavaScript для абсолютных новичков!


Доброго времени суток, друзья!

В прошлом уроке мы с Вами рассмотрели случаи взаимодействия переменных с типами String(Строка), Number (Число) и Boolean (Логический тип). Кроме этого мы познакомились с результатами взаимодействия этих переменных со специфическими значениями типа Null и Undefined. А так же мы получили новые знания о комментариях в коде, их назначении и форме представления.

По сути нам осталось разобрать:

  1. Неявное преобразование типов при взаимодействии переменных строкового (String) типа со специфическими значениями: Null и Undefined.
  2. Неявное преобразование типов при взаимодействии переменных числового (Number) типа со специфическими значениями: Null и Undefined. А так же...
  3. Неявное преобразование типов при взаимодействии специфических типов 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.

Вооруженные такой теорией мы можем сделать следующие выводы:

  1. Переменная var a = 1; после операции a++; при увеличении на 1 получит в свое значение результат 2.
  2. Переменная var b = '2';. Переменная строкового типа. Однако, с цифирным значением. Значит JavaScript в своем неявном преобразовании этой переменной к числу даст ей значение 2. И после операции b++; увеличит это преобразованное значение на 1. Получаем 3.
  3. Переменная var c = null;. В соответствии с уже известной нами ассоциацией будет преобразована JavaScript'ом в 0. И после операции b++; увеличит это преобразованное значение на 1. Получаем 1.
  4. Переменная 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, которую мы объявили в первой строке кода, а новое значение, перезаписанное предыдущим инкрементом. Все тоже самое актуально и для операции с декрементом.

А на сегодня все.

Ссылки на предыдущие уроки:

  1. Урок 1.
  2. Урок 2.
  3. Урок 3.
  4. Урок 4.
  5. Урок 5.
  6. Урок 6.
  7. Урок 7.
  8. Урок 8.
  9. Урок 9.

Продолжение следует...


Comments 2


Очень крутая инициатива! Прямо душа радуется, что на Голосе ведутся образовательные курсы!

жаль, что мне программирование не интересно (=

09.02.2017 12:12
0

Могу предположить, что Вам интересны другие направления.
Благодарю за положительный комментарий!

09.02.2017 12:14
0

Да, лично мне интересны различные направления, как те в которых я разбираюсь, так и те, в которых я профан. От маркетинга, потенциально, до игры на гитаре, которую я хочу освоить с детства.

09.02.2017 17:14
0

Привет!

Этот пост был выбран Академией Голоса и попал в список программы поддержки качественных образовательных постов.
Ссылка на твой пост будет опубликована в отчете Академии.

Спасибо за полезный контент (ノ◕ヮ◕)ノ*:・゚✧

10.02.2017 10:14
0

@rassen, Поздравляю!,
Ваш пост был упомянут в моем хит-параде в следующих категориях:

  • Голосов - 9 позицию - 90 Голосов
  • Выплаты - 3 позицию - 1364,8230 GESTS
11.02.2017 07:37
0