Логические значения JavaScript объясняются путём обращения в суд

1656596056 logicheskie znacheniya javascript obyasnyayutsya putyom obrashheniya v sud

Кевин Кононенко

1*-ZzuerbatF4F0uu9qCvHaA
Фото Бритни Балтер на Unsplash.

Если вы когда-нибудь смотрели телешоу о суде (или были в суде), вы можете понять логические значения JavaScript.

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

В конце концов, поскольку переменная может быть любой из следующего:

  • номер
  • строка
  • массив
  • объект
  • логическое значение

…кажется, что логическое значение самое простое.

let bool = true;
let bool= false;

Есть только два варианта для логического значения true или false. И они используются в if() операторы, чтобы решить, какой оператор должен быть выполнен.

if(true){
}
else{
// if value is false, this block runs
}

Но вот в чем дело. Внутри if() инструкции, другие значения переменных могут оценить на истину или ложь. Другими словами, как только значение используется в if() JavaScript оценит, так ли это true или false.

Например, знаете ли вы, есть ли значение 0 true или false?

Это не философский вопрос. У JavaScript есть ответ.

В любом случае, это происходит потому, что JavaScript есть a слабо набранный язык. Это означает, что в контексте an if() оператор, он преобразует другие значения переменных в true или false чтобы запустить код. Это известно как определение «истинности» ценности.

0*JYzIah834O2zHY4K

Много других языков есть сильно типизированныйпоэтому они не будут превращать значение в истину или ложность.

Это может показаться немного безумным, но на самом деле это очень похоже на то, как судья в Соединенных Штатах определяет, обвиняемый ли невиновным или виновным. Итак, я могу объяснить, как это «правдивость» и true/false работает в JavaScript через юридические нормы, которые вы видели в «Законе и порядке» или любые другие судебные процессуальные драматургии по телевизору.

Для целей этого учебника представьте, что вы — окружной прокурор, пытающийся привлечь к ответственности лицо, обвиняемое в краже автомобиля.

И вам понадобится понять основы переменных JavaScript, чтобы воспользоваться этим учебником. Давайте разберемся!

Что такое «истинность» в JavaScript?

В Соединенных Штатах система уголовного права утверждает, что обвиняемый «невиновен, пока его вина не будет доказана». Это означает, что на прокурора (в данном случае на вас) лежит бремя предоставить достаточное количество доказательств, чтобы опровергнуть предположение по умолчанию о невиновности обвиняемого.

На самом деле стандарт доказательств «вне разумного сомнения». Это постоянно во многих странах мира.

Когда мы используем if() мы не всегда сможем подключить переменную со значением true или false. Много раз мы должны подключать оператор, который будет оценивать JavaScript. как true или false.

Это похоже на правовую систему! Хотя это так Возможно что будет одно доказательство, которое делает вердикт «виновным» или «невинным» очевидным, также вероятно, что судье или присяжному придется оценить несколько доказательств и принять решение.

Начнём с основ. А true заявление является доказательством, которое приведет к осуждению обвиняемого. А false заявление является доказательством, которое позволит им свободно ходить. Давайте создадим переменную под названием evidence и установите его true.

let evidence = true;
if (evidence){
  convict();
}
else{
  release();
}

convict() и release() являются вымышленными функциями. В данном случае, поскольку доказательства установлены до true, судья осудил бы автовор. Вот интерактивная диаграмма этого сценария.

1*hQ4EcsTZPmWWNOXLvxRThQ
1*zNtmdN3AjQ4Tpcl_Xa_oKA

Грабитель чем-то похож на Эдварда Нортона из «Итальянской работы», да?

0*FRlRPnEU3_Pu7fYK

Во всяком случае, в реальной жизни это никогда не бывает так просто. Предположим, у вас есть убийственное доказательство – отпечатки пальцев из дверей автомобиля. Вы предъявляете это судье.

let evidence = "fingerprints";
if (evidence){
  convict();
}
else{
  release();
}

Ага! Мы изменили только первую строчку, где мы объявили переменные доказательства. И теперь это строчка, а не логическое значение. Но угадайте что? Из-за тип принужденияJavaScript оценит строку как true. Поскольку нет условий внутри if() оператор, все строки есть true. Мы бы запустили convict() функция!

0*3f8jEtYDOMaiVPeX

Примеры правдивости

Представим, что вместо этого для переменной доказательств установлено значение 0. Мы бегаем так же if() снова заявление.

let evidence = 0;
if (evidence){
  convict();
}
else{
  release();
}

В этом случае утверждение фактически будет оцениваться до falseи наш обвиняемый автовор был бы уволен.

0*x6feidPaPL5Uga82

Вот почему это называется «истинностью», поскольку JavaScript оценивает, есть ли условие true или false.

Поскольку переменная установлена 0это если бы вас попросили предоставить доказательства против вора, а вы сказали… ничего.

0*vDx4QLx1Hfwa6e07

Очевидно, судья определит, что у вас недостаточно доказательств, и уволит человека! То же произойдет, если для доказательств установлена ​​пустая строка ``. Вы все еще ничего не предлагаете, поэтому ваше заявление оценивается как false.

let evidence="";

Вот еще один тест, чтобы проверить, понимаете ли вы true против false. Что делать, если переменная еще не была инициализирована значением?

let evidence;
if (evidence){
  convict();
}
else{
  release();
}

Это довольно распространенный вариант, потому что веб-разработчики будут иметь другой оператор в своем сценарии, который придает значение evidence переменный. И, как и в двух примерах выше, JavaScript будет оценивать эту переменную как false если он не имеет никакой ценности.

Это отличный пример «невинности, пока вина не будет доказана». Переменной еще не присвоено значение, поэтому JavaScript не может вызвать ее true.

Использование элементов DOM в операторах if().

Итак, мы рассмотрели значение переменных, которые являются «ложными». Но как насчет элементов из DOM?

Примечание: если вам нужно обновление, просмотрите мое руководство по элементам DOM здесь.

Другими словами, что происходит, когда мы используем элемент DOM, чтобы определить, какую ветвь файла if/else заявление баллотироваться? Если вы используете jQuery или React (или Angular и т.д.), вы, вероятно, манипулируете DOM, чтобы создать более динамичный интерфейс.

В нашем примере с залом суда, допустим, вы клянитесь, что отмычка, которую использовал вор, находится в мусорном баке вблизи места преступления. В терминах HTML вы говорите, что существует div с идентификатором lockpick где-то в DOM. Как судья может подтвердить ваше требование?

if(document.getElementById('lockpick')){
  convict()
}
else{
  release()
}

Вот интерактивное изображение этого сценария.

1*p37rdMZPQYElpR9ZZCITcQ
1*jcorLVV6rRXqiHk_XnBKdQ

«Истинность» здесь означает, что JavaScript проверит DOM и только вернет true если он найдет элемент с идентификатором lockpick. Это как судья, который определяет, есть ли доказательства, которые вы предоставляете, подлинными и подлинными. В этом случае это так, поэтому первый блок кода запустится, и человек будет осужден.

Это очень полезно! Теперь мы расширили концепцию true так, чтобы он включал, существует ли элемент или нет. Эта логика также относится к объектам и массивам. Вы можете проверить, существует ли элемент с определенным классом или есть у определенного элемента дочерние, вы поняли.

Больше вариантов операторов if().

Когда вы доставите обвиняемого в суд, его все равно могут осудить за преступление. Если у вас недостаточно доказательств по основному обвинению, они все равно могут быть осуждены по меньшим обвинениям.

В примере угона автомобиля говорится о взломе и проникновении преступления, а дальше возможна кража, если обвиняемый уже проник в автомобиль.

Можем комбинировать if(), else if()и else() смоделировать эти параметры. Скажем, обвиняемый сделала ворвался в машину, но ничего не взял. Мы могли бы моделировать следующие варианты:

let breaking = true;
let theft = false;
if (breaking && theft){
  convict('felony');
}
else if(breaking){
  convict ('misdemeanor');
}
else{
  release();
}

Сейчас есть три сценария. Если первое условие выполнено, этот блок кода будет запущен. Это означает, что вор будет осужден за тяжкое преступление. Но, если только значение переменной breaking можно оценить как trueлицо все равно будет осуждено за проступок.

Судья говорит: «Вы должны показать мне доказательства проникновения и проникновения и воровство, если я собираюсь осудить этого человека за тяжкое преступление».

0*09AccMKv051RIVLG

Первый if() заявление оценит true && falseкоторая будет сведена к false поскольку false имеет преимущество над true (помни, невиновен, пока вина не будет доказана).

Это все равно работало бы, если бы мы использовали значения, которые были «истинными» или «ложными». Каждый из них будет оценен true или false в пределах if() оператор, а затем JavaScript решит, какой блок выполнить.

Получите больше наглядных пособий

Вам понравилось это руководство? Дайте ему «хлопок» или зарегистрируйтесь ниже, чтобы получить мои последние учебники по темам веб-разработки.

Добавить комментарий

Ваш адрес email не будет опубликован.