Načrtovanje in razvoj spletnih aplikacij

Boolean

Tip boolean v JavaScriptu ima dve možni vrednosti: true in false. Logične vrednosti uporabljamo pri pogojih, primerjavah, zankah in pri preverjanju, ali se neki izraz obravnava kot resničen ali neresničen.

Pomni: V JavaScriptu ni vsaka vrednost v pogoju že zapisana kot true ali false. Veliko drugih vrednosti se v logičnem kontekstu samodejno pretvori v logično vrednost.

Osnovna pravila

  • Tip boolean ima dve vrednosti: true in false.
  • Funkcija Boolean(vrednost) pretvori podano vrednost v logično vrednost.
  • Primitivna logična vrednost in objekt Boolean nista isto.
  • Pri novi kodi praviloma uporabljamo primitivne logične vrednosti, ne pa objektov, ustvarjenih z new Boolean().
  • Metodi valueOf() in toString() vrneta primitivno vrednost oziroma nizovni zapis logične vrednosti.

Primerjave

Osnovno o logičnih vrednostih

Logične vrednosti uporabljamo povsod, kjer preverjamo, ali nek pogoj velja ali ne velja. Rezultat primerjave je pogosto logična vrednost.

const a = true;
const b = false;

const rezultat1 = 10 > 5;
const rezultat2 = 3 === 7;
<p id="primer1"></p>
<script>
{
   const rezultat1 = 10 > 5;
   const rezultat2 = 3 === 7;
   document.getElementById("primer1").innerHTML =
      rezultat1 + "<br>" + rezultat2;
}
</script>

Pretvorba v logično vrednost

Funkcija Boolean() pretvori podano vrednost v logično vrednost. Nekatere vrednosti so v logičnem kontekstu neresnične, druge pa resnične.

Vrednost Pretvorba
false false
0 false
"" false
null false
undefined false
NaN false
"JavaScript" true
25 true
<p id="primer2"></p>
<script>
{
   document.getElementById("primer2").innerHTML =
      Boolean(2 > 1) + "<br>" +
      Boolean(0) + "<br>" +
      Boolean("") + "<br>" +
      Boolean("Miha");
}
</script>

Pozor: Prazni niz "", število 0, vrednosti null, undefined in NaN se v logičnem kontekstu obravnavajo kot neresnične vrednosti.

Primitivna vrednost in objekt Boolean

Razred Boolean je ovojna objektna različica primitivnega tipa boolean. V praksi je pomembno predvsem to, da se primitivna vrednost false in objekt new Boolean(false) ne obnašata enako v pogojnem stavku.

<p id="primer3"></p>
<script>
{
   const primitivna = false;
   const objektna = new Boolean(false);

   document.getElementById("primer3").innerHTML =
      typeof primitivna + "<br>" +
      typeof objektna;
}
</script>

<p id="primer4"></p>
<script>
{
   const objektna = new Boolean(false);

   if (objektna) {
      document.getElementById("primer4").textContent =
         "Objekt Boolean se v pogoju obravnava kot resničen.";
   }
}
</script>

Pozor: Objekt new Boolean(false) ni isto kot primitivna vrednost false. Ker gre za objekt, se v pogoju obravnava kot resničen. Zato v novi kodi praviloma ne uporabljamo konstruktorja new Boolean().

Metode objekta Boolean

Pri delu z logičnimi vrednostmi sta najpomembnejši metodi valueOf() in toString().

Metoda Opis
valueOf() Vrne primitivno logično vrednost.
toString() Pretvori logično vrednost v niz "true" ali "false".

Metoda valueOf()

Metoda valueOf() vrne primitivno logično vrednost:

<p id="primer5"></p>
<script>
{
   const bool = true;
   const x = bool.valueOf();
   document.getElementById("primer5").textContent = x;
}
</script>

Metoda toString()

Metoda toString() pretvori logično vrednost v niz:

<p id="primer6"></p>
<script>
{
   const bool = false;
   const x = bool.toString();
   document.getElementById("primer6").textContent = x;
}
</script>

Uporaba v pogojih

Logične vrednosti se najpogosteje uporabljajo v pogojnih stavkih. Pogoj ni nujno že zapisan kot logična vrednost, saj JavaScript pri preverjanju samodejno uporabi pretvorbo v logično vrednost.

<p id="primer7"></p>
<script>
{
   const uporabniskoIme = "Miha";

   if (uporabniskoIme) {
      document.getElementById("primer7").textContent =
         "Pogoj je izpolnjen.";
   }
}
</script>

Priporočila

  • V novi kodi uporabljaj primitivne logične vrednosti true in false.
  • Za pretvorbo vrednosti v logično vrednost uporabljaj Boolean(vrednost).
  • Pri razlagi pogojev jasno loči med resničnimi in neresničnimi vrednostmi.
  • Za delo z logičnimi vrednostmi praviloma ne uporabljaj konstruktorja new Boolean().
  • Pri primerih s pogoji pokaži tudi, da JavaScript v logičnem kontekstu uporablja samodejno pretvorbo vrednosti.

Pogoste napake

  • Primitivna logična vrednost in objekt Boolean se obravnavata kot enakovredna, čeprav to ni isto.
  • Konstruktor new Boolean(false) se uporablja, kot da bi v pogoju predstavljal neresnično vrednost.
  • Pri razlagi logičnih vrednosti ni pojasnjeno, da se druge vrednosti v pogojih samodejno pretvarjajo v logično vrednost.
  • Metoda Boolean() in konstruktor new Boolean() se predstavljata kot enakovredni možnosti, čeprav imata različen rezultat.
  • Vrednosti 0, "", null, undefined in NaN se obravnavajo, kot da bi bile v pogoju resnične.