Обяснени логически булеви JavaScript - Как да използваме логически булеви в JavaScript

Булево

Booleans са примитивен тип данни, често използван в езиците за компютърно програмиране. По дефиниция логическото число има две възможни стойности: trueили false.

В JavaScript често има имплицитна принуда от тип към булева. Ако например имате оператор if, който проверява определен израз, този израз ще бъде принуден да бъде булев:

const a = 'a string'; if (a) { console.log(a); // logs 'a string' }

Има само няколко стойности, които ще бъдат принудени да бъдат фалшиви:

  • false (всъщност не е принуден, тъй като вече е false)
  • нула
  • неопределено
  • NaN
  • 0
  • "" (празен низ)

Всички останали стойности ще бъдат принудени да бъдат верни. Когато дадена стойност е принудена да бъде булева стойност, ние също наричаме това „невярно“ или „вярно“.

Един от начините, по който се използва принуда от типа, е използването на операторите or ( ||) и и ( &&):

const a = 'word'; const b = false; const c = true; const d = 0 const e = 1 const f = 2 const g = null console.log(a || b); // 'word' console.log(c || a); // true console.log(b || a); // 'word' console.log(e || f); // 1 console.log(f || e); // 2 console.log(d || g); // null console.log(g || d); // 0 console.log(a && c); // true console.log(c && a); // 'word'

Както можете да видите, операторът или проверява първия операнд. Ако това е вярно или вярно, то го връща незабавно (поради което получаваме „дума“ в първия случай и истина във втория случай). Ако не е вярно или вярно, той връща втория операнд (поради което получаваме „дума“ в третия случай).

С оператора and и той работи по подобен начин, но за да е вярно „и“, и двата операнда трябва да са истински. Така че винаги ще връща втория операнд, ако и двата са верни / истина, в противен случай ще върне false. Ето защо в четвъртия случай се сбъдваме, а в последния получаваме „дума“.

Булевият обект

Има и собствен обект на JavaScript, който обгръща стойност. Стойността, предадена като първи параметър, се преобразува в булева стойност, ако е необходимо. Ако стойността е пропусната, 0, -0, null, false, NaN, undefined или празният низ (""), обектът има първоначална стойност false. Всички други стойности, включително всеки обект или низът „false“, създават обект с начална стойност true.

Не бъркайте примитивните булеви стойности true и false с true и false стойностите на Boolean обекта.

Повече информация

Всеки обект, чиято стойност не е недефинирана или нула, включително булев обект, чиято стойност е false, се оценява на true, когато се предава на условен оператор. Ако е вярно, това ще изпълни функцията. Например условието в следния оператор if изчислява на true:

const x = new Boolean(false); if (x) { // this code is executed }

Това поведение не се отнася за булеви примитиви. Например условието в следния оператор if изчислява на false:

const x = false; if (x) { // this code is not executed }

Не използвайте булев обект за преобразуване на не-булева стойност в булева стойност. Вместо това използвайте Boolean като функция за изпълнение на тази задача:

const x = Boolean(expression); // preferred const x = new Boolean(expression); // don't use

Ако посочите какъвто и да е обект, включително булев обект, чиято стойност е false, като начална стойност на булев обект, новият булев обект има стойност true.

const myFalse = new Boolean(false); // initial value of false const g = new Boolean(myFalse); // initial value of true const myString = new String('Hello'); // string object const s = new Boolean(myString); // initial value of true

Не използвайте булев обект вместо булев примитив.