< JavaScript

JavaScript - Kérdőjel operátor

Szerző: Sallai András

Copyright © Sallai András, 2023

Licenc: CC Attribution-Share Alike 4.0 International

Web: https://szit.hu

Hármas operátor

Az hármas operátor egy három elemből álló kifejezést alkot.

állítás ? érték_ha_igaz : érték_ha_hamis

A hagyományos if…else egy alakjának is tekinthető.

Példa:

const age = 23; const message = age >= 18 ? 'Felnőtt' : 'Kiskorú'; console.log(message); // Felnőtt

Példa 2:

const isAdmin = true; const accessLevel = isAdmin ? 'Teljes hozzáférés' : 'Korlátozott hozzáférés'; console.log(accessLevel); // Teljes hozzáférés

Opcionális láncolás

2020-ban vezették be az opcionális láncolás funkciót.

Ha nem létező objektumra hivatkozunk ez futás közben hibát vált ki. A „?” beszúrásával ellenőrizhetjük a hivatkozást.

const employee = { city: 'Szeged', salary: 357 } console.log(employee.name?.length)

Nulla összevonás

A nulla összevonás, angolul: Nullish Coalescing.

Bizonyos esetekben alapértelmezett értéket használunk. Ez a „||” operátorral tehetjük meg.

const employee = { name: undefined || 'névtelen', city: 'Szeged', salary: 357 } console.log(employee.name)

Ha az viszont szándékosan 0 vagy '' (üres sztring) amit szeretnénk beállítani, váratlan viselkedést tapasztalhatunk.

Tegyük fel, hogy a következő példában szereplő Nagy Ernő, nem kap fizetést, ezért 0, azaz nulla értéket szeretnénk beállítani.

const employee = { name: 'Nagy Ernő', city: 'Szeged', salary: 0 || 'nincs beállítva' } console.log(employee.salary)

Ha kiíratjuk 0-t kell kapjunk, hiszen be van állítva, a fizetése 0. De ha kiíratjuk nem 0-át kapunk.

Használjuk a ?? operátort:

const employee = { name: 'Nagy Ernő', city: 'Szeged', salary: 0 ?? 'nincs beállítva' } console.log(employee.salary)

Alapértelmezett érték

const username = null; const currentUser = username || 'Guest'; console.log(currentUser); // Guest
function greet(name) { const userName = name || 'Ismeretlen'; console.log(`Hello, ${userName}!`); } greet(); // Hello, Ismeretlen! greet('John'); // Hello, John!