История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Топ:
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Дисциплины:
2020-05-07 | 128 |
5.00
из
|
Заказать работу |
|
|
Сравним null с нулём:
alert(null > 0); // false
alert(null == 0); // false
Итак, мы получили, что null не больше и не равен нулю. А теперь…
alert(null >= 0); // true
Как такое возможно? Если нечто «больше или равно нулю», то резонно полагать, что оно либо больше, либо равно. Но здесь это не так.
Дело в том, что алгоритмы проверки равенства == и сравнения >= > < <= работают по-разному.
Сравнение честно приводит к числу и получается ноль. А при проверке равенства значения null и undefined обрабатываются особым образом: они равны друг другу, но не равны чему-то ещё. В результате получается странная с точки зрения здравого смысла ситуация.
Несравнимый undefined
Значение undefined вообще нельзя сравнивать:
alert(undefined > 0); // false
alert(undefined < 0); // false
alert(undefined == 0); // false
Сравнения дают false потому, что undefined при преобразовании к числу даёт NaN. А значение NaN по стандарту устроено так, что сравнения ==, <, >, <=, >= и даже === с ним возвращают false.
Вывод: любые сравнения с undefined/null, кроме точного ===, следует делать с осторожностью.
Желательно вообще не использовать сравнения (>=, >, <, <=) с ними, во избежание ошибок в коде.
Условные инструкции
Условные инструкции позволяют выполнять или пропускать любой блок кода в зависимости от условия. Эти инструкции являются точками принятия решений в программе, и иногда их также называют инструкциями «ветвления».
Если представить, что программа – это дорога, а интерпретатор JavaScript – путешественник, идущий по ней, то условные инструкции можно представить, как перекрестки, где программный код разветвляется на две или более дорог, и на таких перекрестках интерпретатор должен выбирать, по какой дороге двигаться дальше.
Инструкция if (если)
|
Инструкция if – это базовая управляющая инструкция, позволяющая интерпретатору JavaScript принимать решения или, точнее, выполнять инструкции в зависимости от условий.
Инструкция имеет две формы:
1. if (выражение) инструкция; — В этой форме сначала вычисляется выражение. Если результат является истинным, то инструкция выполняется. Если выражение возвращает ложное значение, то инструкция не выполняется, и просто пропускается.
Например:
if (age >= 100) alert(“Вы долгожитель”);
// Если переменная age больше или равна 100 то мы выводим alert()
// Если переменная age равна другому значению, то alert() не выводится и просто пропускается
2. if (выражение) инструкция1; else инструкция2; — Вторая форма инструкции if вводит конструкцию else, выполняемую в тех случаях, когда выражение возвращает ложное значение.
Например:
if (age >= 18) alert(“Вы совершеннолетний человек”);
else alert(“Вам еще не исполнилось 18 лет”);
//Если переменная age меньше 18, то выводится второй alert()
При наличии вложенных инструкций if с блоками else требуется некоторая осторожность – необходимо гарантировать, что else относится к соответствующей ей инструкции if. Согласно правилам JavaScript (и большинства других языков программирования), конструкция else является частью ближайшей к ней инструкции if.
Важно!
· Скобки вокруг условного выражения являются обязательной частью синтаксиса инструкции if.
If (условное выражение приводящее значение к логическому типу) инструкция;
· Синтаксис языка JavaScript позволяет вставить только одну инструкцию после инструкции if и выражения в круглых скобках или else, однако одиночную инструкцию всегда можно заменить блоком инструкций. Поэтому инструкция if может выглядеть так:
if (address) {
message = "Спасибо! Скоро мы вышлем Вам посылку. ";
} else {
address = "";
message = "Пожалуйста, укажите почтовый адрес.";
}
Инструкция else if
Инструкция if вычисляет значение выражения и выполняет тот или иной фрагмент программного кода в зависимости от результата. Но что если требуется выполнить один из многих фрагментов?
|
Возможный способ сделать это состоит в применении инструкции else if. Формально она не является самостоятельной инструкцией JavaScript; это лишь распространенный стиль программирования, заключающийся в применении повторяющихся инструкций if/else:
if (n == 1) {// Выполнить блок кода 1}
else if (n == 2) {// Выполнить блок кода 2}
else if (n == 3) {// Выполнить блок кода 3}
else if (n == 4) {// Выполнить блок кода 4}
else {// Если ни одна из предыдущих инструкций else не была выполнена, выполнить блок 5}
В этом примере нет ничего особенного. Это просто последовательность инструкций if, где каждая инструкция if является частью конструкции else предыдущей инструкции.
Стиль else if предпочтительнее и понятнее записи в синтаксически эквивалентной форме, полностью показывающей вложенность инструкций:
Условный оператор (?:)
Условный оператор – это единственный тернарный (с тремя операндами) оператор, и иногда он так и называется – «тернарный оператор».
Этот оператор обычно записывается как …?...: …;
Он имеет три операнда, первый перед символом?, второй между? и:, третий после:.
username? console.log("hello " + username): console.log("hello Anonymous");
Операнды условного оператора могут быть любого типа.
Первый операнд вычисляется и используется как логическое значение. Если первый операнд имеет истинное значение, то вычисляется и возвращается значение выражения во втором операнде. Если первый операнд имеет ложное значение, то вычисляется и возвращается значение выражения в третьем операнде.
Вычисляется всегда только какой-то один операнд, второй или третий, и никогда оба.
Тот же результат можно получить с помощью инструкции if, но оператор?: часто оказывается удобным сокращением.
Вот пример, в котором проверяется, определена ли переменная, и если да, то берется ее значение, а если нет, берется значение по умолчанию:
greeting = "hello " + (username? username: "there");
Эта проверка эквивалентна следующей конструкции if, но более компактна:
greeting = "hello ";
if (username) greeting += username;
else greeting += "there";
Инструкция switch
Инструкция if создает ветвление в потоке выполнения программыю. Однако это не всегда наилучшее решение, особенно если все ветви зависят от значения одного выражения. В этом случае расточительно вычислять значение одного и того же выражения в нескольких инструкциях if.
|
Инструкция switch предназначена именно для таких ситуаций.
За ключевым словом switch следует выражение в скобках и блок кода в фигурных скобках:
switch(выражение) { инструкции }
Однако полный синтаксис инструкции switch более сложен, чем показано здесь.
Различные места в блоке помечены ключевым словом case, за которым следует выражение и символ двоеточия. Ключевое слово case напоминает инструкцию с меткой за исключением того, что оно связывает инструкцию с выражением, а не с именем.
Когда выполняется инструкция switch, она вычисляет значение выражения, а затем ищет метку case, равную этому значению (соответствие определяется с помощью оператора идентичности ===).
Если метка найдена, выполняется блок кода, начиная с первой инструкции, следующей за меткой case. Если метка case с соответствующим значением не найдена, выполнение начинается с первой инструкции, следующей за специальной меткой default:. Если метка default: отсутствует, блок инструкции switch пропускается целиком.
Работу инструкции switch сложно объяснить на словах, гораздо понятнее выглядит объяснение на примере. Следующая инструкция switch эквивалентна повторяющимся инструкциям if/else, показанным в предыдущем разделе:
switch(n) {
case 1: // Выполняется, если n === 1 // Выполнить блок 1. break; // Здесь остановиться
case 2: // Выполняется, если n === 2 // Выполнить блок 2. break; // Здесь остановиться
case 3: // Выполняется, если n === 3 // Выполнить блок 3. break; // Здесь остановиться
default: // Если все остальное не подходит... // Выполнить блок 4. break; // Здесь остановиться
}
Обратите внимание на ключевое слово break в конце каждого блока case.
Инструкция break, приводит к передаче управления в конец инструкции switch и продолжению выполнения инструкций, следующих далее.
Конструкции case в инструкции switch задают только начальную точку выполняемого программного кода, но не задают никаких конечных точек. В случае отсутствия инструкций break инструкция switch начнет выполнение блока кода с меткой case, соответствующей значению выражения, и продолжит выполнение инструкций до тех пор, пока не дойдет до конца блока. В редких случаях это полезно для написания программного кода, который переходит от одной метки case к следующей, но в 99% случаев следует аккуратно завершать каждый блок case инструкцией break.
Инструкция switch сначала вычисляет выражение после ключевого слова switch, а затем выражения case в том порядке, в котором они указаны, пока не будет найдено совпадающее значение.
|
|
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!