Автор оригинала: FreeCodeCamp Community Member.
Кевином Кононенко
Если вы когда-либо смотрели телешоу о суд (или были в суд), то вы можете понять логии в JavaScript.
Вы можете подумать, что Booleans – самая простая тема, которую вы могли бы попросить в JavaScript.
В конце концов, поскольку переменная может быть любое из следующих действий:
- номер
- нить
- множество
- объект
- логический
… Boolean кажется самым простым.
let bool = true;
let bool= false;
Единственные два варианта логии являются правда
или ложь
Отказ И они используются в Если ()
утверждения, чтобы решить, какое утверждение должно быть выполнено.
if(true){
}
else{
// if value is false, this block runs
}
Но вот дело. Внутри Если ()
Заявления, другие вариабельные значения могут Оценить к истинному или ложному. Другими словами, как только значение используется в Если ()
Заявление, JavaScript оценит ли это правда
или ложь
Отказ
Например, знаете ли вы, если значение 0 это правда
или ложь
?
Это не философия. JavaScript имеет ответ.
В любом случае, это происходит, потому что JavaScript – это Слабо напечатано язык. Это означает, что в контексте Если ()
Заявление, он преобразует другие вариабельные значения в правда
или ложь
Для того, чтобы запустить код. Это известно как определение «правдимости» значения.
Многие другие языки – Сильно напечатано Таким образом, они не будут преобразовывать значения в True или False.
Это может показаться немного сумасшедшим, но на самом деле это довольно похоже на то, как судья в Соединенных Штатах определяет, является ли обвиняемого невинным или виновным. Итак, я могу объяснить, как «правдивость» и правда
/ ложь
Работает в JavaScript с помощью юридических правил, которые вы видели в «Закон и порядке» или любых других судебных процессуальных драм на телевидении.
Для целей настоящего учебника представьте, что вы являетесь районным прокурором, который пытается преследовать человека, который обвиняется в краже автомобиля.
И вам нужно будет понять Основы переменных в JavaScript Использовать это руководство. Давайте попадаем в это!
Что такое «правда» в JavaScript?
В Соединенных Штатах, система уголовного права гласит, что обвиняемый – «невинный, пока не доказал себя виновным». Это означает, что бремя лежит на прокурор (в этом случае), чтобы обеспечить достаточно доказательств, чтобы опровергнуть предположение по умолчанию, что обвиняемый невиновен.
На самом деле, стандарт доказательств – « за пределами разумных сомнений. » Это согласуется во многих странах мира.
Когда мы используем Если ()
Заявления, мы не всегда сможем подключить переменную со значением правда
или ложь
Отказ Много раз мы должны подключить заявление, которое будет оценено JavaScript как правда
или ложь
Отказ
Это похоже на правовую систему! Хотя это возможно Что произойдет один доказательств, который делает «виновным» или «невиновным» вернителем очевидным, также вероятно, что судья или жюри нужно будет оценить несколько доказательств и принять решение.
Давайте начнем с основы. А правда
Заявление – это доказательства, которые приведут к осуждению обвиняемого. А ложь
Заявление – это доказательства, которые позволят им пройти бесплатно. Давайте создадим переменную под названием доказательства
и установить это на правда
Отказ
let evidence = true;
if (evidence){
convict();
}
else{
release();
}
осужденный ()
и Выпуск ()
Сделанные функции. В этом случае, поскольку доказательства установлены на правда
Судья осудил бы вором автомобиля. Вот интерактивная диаграмма этого сценария.
Грабитель вроде выглядит как Эдвард Нортон из «Итальянской работы», а?
В любом случае, в реальной жизни, это никогда не так просто. Допустим, у вас есть убийственный доказатель доказательств – отпечатки пальцев от автомобильной двери. Вы представляете это судью.
let evidence = "fingerprints";
if (evidence){
convict();
}
else{
release();
}
Ага! Мы изменили только первую строку, где мы объявили переменные доказательства. И теперь это нить, а не булева. Но угадайте, что? Из-за Тип принуждения JavaScript оценит строку как правда
Отказ Так как нет никакого состояния в Если ()
Заявление, все строки – правда
Отказ Мы бы запустили осужденный ()
Функция!
Примеры правды
Давайте представим это вместо этого, переменная доказательства установлена на 0
Отказ Мы бежим то же самое Если ()
Снова снова.
let evidence = 0;
if (evidence){
convict();
}
else{
release();
}
В этом случае утверждение фактически оценивает на ложь
И наш обвиняемый вор будет освобожден.
Вот почему это называется «правдивость» – потому что JavaScript оценивает, является ли состояние правда
или ложь
Отказ
Поскольку переменная установлена на 0
, это вроде, если бы вас попросили представить доказательства против вора, и вы сказали … ничего.
Очевидно, что судья собирается определить, что у вас недостаточно доказательств, и освободил человека! То же самое произойдет, если доказательства были установлены на пустую строку ``
Отказ Вы все равно ничего не предлагаете, поэтому ваше утверждение оценивается как ложь
Отказ
let evidence = '';
Вот еще один тест, чтобы увидеть, если вы понимаете правда
против ложь
Отказ Что если переменная еще не была инициализирована для значения?
let evidence;
if (evidence){
convict();
}
else{
release();
}
Это довольно распространена, потому что веб-разработчики будут иметь другое утверждение в своем сценарии, который дает значение для доказательства
Переменная. И, как и два примера выше, JavaScript оценит эту переменную как ложь
Если у него нет никакого значения.
Это отличный пример «невинного доказана виновным». Переменная еще не была назначена значением, поэтому нет, JavaScript может вызвать это правда
Отказ
Использование элементов DOM в IF () утверждениях
Таким образом, мы охватывали значения переменных, которые являются «Falsy». Но как насчет элементов от дома?
Примечание : Если вам нужен переподготовка, проверьте мой Руководство по элементам DOM здесь Отказ
Другими словами, что происходит, когда мы используем элемент DOM, чтобы определить, какую ветвь Если/else
Заявление для бега? Если вы используете jQuery или rect (или угловой и так далее), вы, вероятно, манипулируете DOM, чтобы создать более динамичный интерфейс.
В нашем примере в зале заручитель, давайте скажем, что вы клянетесь, что LockPick использовал вор, расположен в мусорном ведре рядом с местом преступления. В HTML-терминах вы говорите, что есть div с ID Локпик
Где-то в доме. Как судья может подтвердить вашу претензию?
if(document.getElementById('lockpick')){
convict()
}
else{
release()
}
Вот интерактивное изображение этого сценария.
«Истинность» здесь означает, что JavaScript проверит DOM, и только возврат правда
Если он находит элемент с ID Локпик
Отказ Это как судья, определяющий, если доказательства, которые вы представляете, является реальным и подлинным. В этом случае это, поэтому первый блок кода будет работать, и человек будет осужден.
Это очень полезно! Теперь мы расширили концепцию правда
так что включает ли элемент или нет. Эта логика также относится к объектам и массивам. Вы можете проверить, существует ли элемент с определенным классом, существует ли определенный элемент дети, вы получаете идею.
Больше вариаций утверждений IF ()
Когда вы приносите обвиняемого в суд, они все еще могут быть осуждены за меньшее преступление. Если у вас недостаточно доказательств для основного
В примере кражи автомобиля есть взлома и въезд преступления, а потом кража возможна, если обвиняемый уже сломался в машину.
Мы можем комбинировать Если ()
, еще если ()
и еще ()
Для моделирования этих вариантов. Допустим, обвиняемый сделал Перерыв в машину, но ничего не взял. Мы могли бы моделировать такие варианты:
let breaking = true;
let theft = false;
if (breaking && theft){
convict('felony');
}
else if(breaking){
convict ('misdemeanor');
}
else{
release();
}
Сейчас есть три сценария. Если первое условие выполнено, этот код код будет работать. Это означает, что вор будет осужден за тяжкое преступление. Но, если только значение переменной ломать
можно оценить как правда
Человек все равно будет осужден за проступок.
Судья говорит: «Вам нужно показать мне доказательства как взлома, так и входящих и кража, если я собираюсь осудить этому лицу преступления».
Первый Если ()
Заявление оценивает правда && false
, который будет уменьшен до ложь
С ложь
имеет приоритет над правда
(помните, невиновен, пока не доказано виновным).
Это все равно будет работать, если бы мы использовали ценности, которые были «правдой» или «Falsy». Каждый будет оценен на правда
или ложь
в пределах Если ()
Заявление, а затем JavaScript решит, какой блок выполнить.
Получить больше визуальных учебников
Вам понравилось это руководство? Дайте ему «хлопать» или зарегистрируйтесь ниже, чтобы получить мои последние учебники по темам веб-разработки.