[[oktatas:web:javascript|< JavaScript]]
====== JavaScript - Kérdőjel operátor ======
* **Szerző:** Sallai András
* Copyright (c) 2023, Sallai András
* Szerkesztve: 2023, 2024
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|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!