🔀 Nosacījumi
Nosacījumi ļauj programmai pieņemt lēmumus – izpildīt dažādu kodu atkarībā no vērtībām un situācijām.
if / else if / else
Teksts
// Pamata if / else
const punkti = 75;
if (punkti >= 90) {
console.log("Lielisks!");
} else if (punkti >= 75) {
console.log("Labi");
} else if (punkti >= 60) {
console.log("Apmierinošs");
} else {
console.log("Nepietiekami");
}
// Vienas rindiņas (bez figūriekavām) – ehtniski, bet bīstami
if (punkti > 50) console.log("Izturēja");
// "Falsy" vērtības (visas tiek uzskatītas par false):
// false, 0, "", null, undefined, NaN
if (!null) console.log("null ir falsy");
if (!0) console.log("0 ir falsy");
if (!"") console.log("Tukša virkne irfalsy");
// Vērtību pārbaudes
const lietotājs = { vārds: "Anna", vecums: 28 };
if (lietotājs && lietotājs.vārds) {
console.log("Vārds:", lietotājs.vārds);
}
if ("vecums" in lietotājs && lietotājs.vecums >= 18) {
console.log("Pilngadīgs lietotājs");
}
switch / case
⚠️
break aizmirsšana
Bez break izpilde "iekrīt" nākamajā case! Tas dažreiz ir paredzēts (vairāki case vienam kodam), bet biežāk ir kļūda.
Teksts
const diena = "pirmd";
switch (diena) {
case "pirmd":
case "otrd":
case "trešd":
case "ceturtd":
case "piektd":
console.log("Darba diena");
break; // ← Obligāts! Bez break "krīt" uz nākamo case
case "sestd":
case "svētd":
console.log("Brīvdiena");
break;
default:
console.log("Nezināma diena");
}
// switch ar return funkcijā
function nosauktDienu(numurs) {
switch (numurs) {
case 1: return "Pirmdiena";
case 2: return "Otrdiena";
case 3: return "Trešdiena";
case 4: return "Ceturtdiena";
case 5: return "Piektdiena";
case 6: return "Sestdiena";
case 7: return "Svētdiena";
default: return "Nezināma";
}
}
console.log(nosauktDienu(3)); // "Trešdiena"
Ternārais operators
Teksts
// nosacījums ? jā : nē
const vecums = 20;
// Vienkāršs
const statuss = vecums >= 18 ? "pieaugušais" : "nepilngadīgs";
// HTML renderēšana
const pierakstīts = false;
const pogas_teksts = pierakstīts ? "Iziet" : "Pieteikties";
document.getElementById("poga").textContent = pogas_teksts;
// CSS klases pārslēgšana
const aktīvs = true;
const klase = `pogas ${aktīvs ? "aktīva" : "neaktīva"}`;
// Funkciju izsaukums
const apstrādāt = dati => dati
? JSON.stringify(dati)
: null;
// IZVAIRĪTIES no dziļas ligzdošanas!
// Grūti lasāms:
const vērtējums = s => s>89?"A":s>79?"B":s>69?"C":s>59?"D":"F";
// Labāk ar if/else vai lookup objektu:
function iegūtVērtējumu(s) {
if (s > 89) return "A";
if (s > 79) return "B";
if (s > 69) return "C";
if (s > 59) return "D";
return "F";
}
Nullish coalescing ?? un ??=
Teksts
// ?? – atgriež labo pusi tikai ja kreisā ir null vai undefined
const ievade = null;
// || problēma: 0, "" arī tiek uzskatīts par "false"
const ar_vai = ievade || "noklusējums"; // "noklusējums"
const nulle = 0 || "noklusējums"; // "noklusējums" ← nevēlami!
// ?? risinājums: tikai null/undefined
const ar_qq = ievade ?? "noklusējums"; // "noklusējums"
const nulle_qq = 0 ?? "noklusējums"; // 0 ← pareizi!
const tuksums = "" ?? "noklusējums"; // "" ← pareizi!
// Praksē – noklusējuma konfigurācija
function izveidotKonfigurāciju(opcijas) {
return {
ports: opcijas.ports ?? 3000,
resursi: opcijas.resursi ?? 10,
debug: opcijas.debug ?? false,
nosaukums: opcijas.nosaukums ?? "MansProjekts",
};
}
const konf = izveidotKonfigurāciju({ ports: 8080, resursi: 0 });
// { ports: 8080, resursi: 0, debug: false, nosaukums: "MansProjekts" }
// ??= piešķiršanas operators
let lietotājs = null;
lietotājs ??= { vārds: "Viesis" }; // Piešķir tikai ja null/undefined
console.log(lietotājs.vārds); // "Viesis"
// Optional chaining + ??
const dati = null;
const vārds = dati?.lietotājs?.vārds ?? "Nezināms";
console.log(vārds); // "Nezināms" (nevis TypeError)
Praktiski piemēri
Teksts
// ========================================
// Formas validācija ar nosacījumiem
// ========================================
function validētPieteikumu(dati) {
const kļūdas = [];
if (!dati.vārds || dati.vārds.trim().length < 2) {
kļūdas.push("Vārdam jābūt vismaz 2 simboli garam");
}
if (!dati.email?.includes("@")) {
kļūdas.push("Nav derīga e-pasta adrese");
}
if (!dati.parole || dati.parole.length < 8) {
kļūdas.push("Parolei jābūt vismaz 8 simboli garai");
} else if (dati.parole !== dati.parole_atkārtota) {
kļūdas.push("Paroles nesakrīt");
}
return kļūdas;
}
const kļūdas = validētPieteikumu({
vārds: "An",
email: "nav-epasts",
parole: "123",
parole_atkārtota: "456"
});
if (kļūdas.length > 0) {
console.log("Validācijas kļūdas:");
kļūdas.forEach(k => console.log("• " + k));
} else {
console.log("Visi dati derīgi!");
}
// ========================================
// Stāvokļu mašīna ar switch
// ========================================
function pasūtījumaStatuss(statuss) {
switch (statuss) {
case "gaida": return { krāsa: "dzeltena", teksts: "Gaida apstrādi" };
case "apstrādā": return { krāsa: "zila", teksts: "Tiek apstrādāts" };
case "nosūtīts": return { krāsa: "zaļa", teksts: "Nosūtīts" };
case "atcelts": return { krāsa: "sarkana", teksts: "Atcelts" };
default: return { krāsa: "pelēka", teksts: "Nezināms statuss" };
}
}