Доброго времени суток, друзья. Продолжаем наше увлекательно знакомство с JavaScript. В прошлом уроке мы рассмотрели основы взаимодействия между переменными с типом String и Number, а также - между переменными с типом String и Boolean. Кроме этого мы попытались выявить общие моменты в неявном преобразовании типов переменных участвующих в арифметических операциях. Надеюсь информация по-прежнему остается доступной. В противном случае - не забываем оставлять вопросы в комментариях.
Ну а мы продолжаем, и на очереди у нас взаимодействие переменных типа Boolean с переменными типа Number (Число).
УРОК 9. Взаимодействие переменных разного типа. Часть III.
Собственно говоря, знаний, полученных из предыдущих уроков, по большому счету должно уже быть достаточно для того, чтобы выявить основные закономерности в операциях между переменными логического и числового типов. Особенно просто это сделать, если снова прибегнуть к ассоциации, в которой логический тип true преобразуется в _1, а логический тип false преобразуется в 0.
Если Вы чувствует, что в силах понять, как именно будет происходить неявное преобразование типов между переменными Boolean и переменными Number - это большая победа. Однако, для полной уверенности мы все же приведем примеры такого взаимодействия и рассмотрим их на практике.
Откроем наши index.html и core.js.
Варианты операций между переменными логического и числового типов выглядят следующим образом:
//логический тип true
var a = true + 1;
var b = true - 2;
var c = true * 3;
var d = true / 4;
/* логический тип false */
var e = false + 1;
var f = false - 2;
var g = false * 3;
var h = false / 4;
Прежде чем приступить к разъяснению, обратите внимание на строчку 1 и строчку 8 нашего кода. Вы можете видеть записи вида //логический тип true
и /* логический тип false */
. Это записи - комментарии.
Комментарии в JavaScript - это строки, которые игнорируются при исполнении кода.
Можно сказать, что эти строки видимы для программиста и абсолютно невидимы для JavaScript. Любая строка кода, начинающаяся с двойного слеша // ...
, либо строки заключенные в пару слеш-звездочка /* ... */
не будут оказывать никакого влияния на исполнение основного кода. Программисты используют комментарии в основном для пояснений. Или в случаях, когда им надо временно изолировать выполнения какой-либо части кода, не удаляя эту часть из файла.
Но давайте вернемся к нашим операциям. При взаимодействии переменных числового и логического типов, JavaScript будет преобразовывать последние к типу Number, после чего начнет выполнять стандартные арифметические операции. Таким образом перед непосредственным вычислением JavaScript приведет строки выше к виду:
//преобразование логического типа true
var a = 1 + 1;
var b = 1 - 2;
var c = 1 * 3;
var d = 1 / 4;
/* преобразование логического типа false */
var e = 0 + 1;
var f = 0 - 2;
var g = 0 * 3;
var h = 0 / 4;
Соответственно нетрудно понять какие результаты попадут в перечисленные переменные. Но мы, традиционно, подтвердим эти вычисления с помощью конструкции alert();
//логический тип true
var a = true + 1;
var b = true - 2;
var c = true * 3;
var d = true / 4;
/* логический тип false */
var e = false + 1;
var f = false - 2;
var g = false * 3;
var h = false / 4;
alert(a);
alert(b);
alert(c);
alert(d);
alert(e);
alert(f);
alert(g);
alert(h);
и проверим их в браузере:
Как видим, все арифметические операции получили логичные и вполне ожидаемые результаты. Не забываем, что при взаимодействии переменных с типами Boolean и Number также, как и в предыдущих примерах присутствует операция, сводящаяся к делению на ноль. Пример ее может выглядеть так: var k = 12 / false
. Как и все операции подобного рода - эта в своем результате будет иметь значение Infinity.
Следующим на очереди у нас взаимодействие переменными с типом Boolean и переменными со специфическими значениями.
Boolean и Undefined.
Начнем с того, что попроще - с взаимодействия переменных типа Boolean и Undefined. Результаты операции такого рода легко запомнить по той простой причине, что он всегда будут равно NaN. Как мы знаем JavaScript легко преобразует логический тип переменных в числовой. Элементарной подстановкой true в 1, false в 0, но вот Undefined как был чем-то неопределенным, так им и остался. Любая арифметическая операция с Undefined не может быть завершена логично. Все что JavaScript сможет об этом рассказать уместится в значение - "Not a Number (Не число)".
Приведем буквально по паре примеров с каждым из двух логических значений переменных:
var a = true + undefined;
var b = undefined - true;
var c = false * undefined;
var d = undefined / false;
alert(a);
alert(b);
alert(c);
alert(d);
Если наши умозаключения верны - все эти операции будут в итоге равны NaN. Проверим в браузере:
И это действительно так.
Boolean и Null.
Чуть сложнее, чем взаимодействие с предыдущим специфическим типом, будут происходить операции между переменными типа Boolean и переменными со значением Null. Сложнее именно относительно, так как по большом счету эти операции так же, как и любые другие подчиняются вполне конкретным законам неявного преобразования типа в JavaScript.
Для ясности в такого рода взаимодействии нам требуется вспомнить из предыдущих уроков, что Null, также, как и Boolean обладает своей ассоциацией. В своем неявном преобразовании Null к числу, JavaScript всегда заменит его на ноль. Ну а принимая во внимание числовое преобразования булевского типа мы легко получим обычные арифметические операции с числами и записи вида:
var a = true + null;
var b = null - false;
var c = true * null;
var d = null / false;
приобретут вполне ясную для вычисления форму:
var a = 1 + 0;
var b = 0 - 0;
var c = 1 * 0;
var d = 0 / 0;
Все это элементарные вычисления. Но я все же позволю себе обратить Ваше внимание на операцию в переменной "d" и напомнить, что результатом операции такого рода будет не Infinity, а все тот же наш частый гость - NaN. В предыдущих уроках мы разбирали это исключение.
Проверим в браузере для чистоты эксперимента:
var a = true + null;
var b = null - false;
var c = true * null;
var d = null / false;
alert(a);
alert(b);
alert(c);
alert(d);
...и наши результаты:
Обратите внимание на сообщение с последним результатом, который действительно оказался равен NaN.
А на сегодня все.
Ссылки на предыдущие уроки:
Продолжение следует...
Привет!
Этот пост был выбран Академией Голоса и попал в список программы поддержки качественных образовательных постов.
Ссылка на твой пост будет опубликована в отчете Академии.
Спасибо за полезный контент (ノ◕ヮ◕)ノ*:・゚✧