УÑловнÑй (ÑеÑнаÑнÑй) опеÑаÑоÑ
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
УÑловнÑй (ÑеÑнаÑнÑй) опеÑаÑÐ¾Ñ - единÑÑвеннÑй опеÑаÑÐ¾Ñ Ð² JavaScript, пÑинимаÑÑий ÑÑи опеÑанда: ÑÑловие, за коÑоÑÑм ÑледÑÐµÑ Ð·Ð½Ð°Ðº вопÑоÑа (?), заÑем вÑÑажение, коÑоÑое вÑполнÑеÑÑÑ, еÑли ÑÑловие иÑÑинно, ÑопÑовождаеÑÑÑ Ð´Ð²Ð¾ÐµÑоÑием (:), и, наконеÑ, вÑÑажение, коÑоÑое вÑполнÑеÑÑÑ, еÑли ÑÑловие ложно. Ðн ÑаÑÑо иÑполÑзÑеÑÑÑ Ð² каÑеÑÑве ÑокÑаÑÑнного ваÑианÑа инÑÑÑÑкÑии if...else.
СинÑакÑиÑ
ÑÑловие ? вÑÑажение1 : вÑÑажение2
ÐаÑамеÑÑÑ
ÑÑловие-
ÐÑÑажение, пÑинимаÑÑее знаÑение
trueилиfalse.
вÑÑажение1,вÑÑажение2-
ÐÑÑажениÑ, знаÑÐµÐ½Ð¸Ñ ÐºÐ¾ÑоÑÑÑ Ð¼Ð¾Ð³ÑÑ Ð¿ÑинадлежаÑÑ Ð»ÑÐ±Ð¾Ð¼Ñ ÑипÑ.
ÐпиÑание
ÐпеÑаÑÐ¾Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение вÑÑажениÑ1, еÑли ÑÑловие веÑно, и знаÑение вÑÑажениÑ2 в пÑоÑивном ÑлÑÑае. ÐапÑимеÑ, ÑÑÐ¾Ð±Ñ Ð²ÑвеÑÑи ÑообÑение, ÑекÑÑ ÐºÐ¾ÑоÑого завиÑÐ¸Ñ Ð¾Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿ÐµÑеменной isMember, можно иÑполÑзоваÑÑ Ñакое вÑÑажение:
function getFee(isMember) {
return "The fee is " + (isMember ? "$2.00" : "$10.00");
}
console.log(getFee(true));
// ÐÑÐ²Ð¾Ð´Ð¸Ñ Ð² конÑолÑ: "$2.00"
console.log(getFee(false));
// ÐÑÐ²Ð¾Ð´Ð¸Ñ Ð² конÑолÑ: "$10.00"
Также можно пÑиÑваиваÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿ÐµÑеменнÑм на оÑнове ÑезÑлÑÑаÑов ÑабоÑÑ ÑеÑнаÑного опеÑаÑоÑа :
const elvisLives = Math.PI > 4 ? "Ðа" : "ÐеÑ";
console.log(elvisLives); // "ÐеÑ"
ÐÐ¾Ð·Ð¼Ð¾Ð¶Ð½Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑвеннÑе ÑеÑнаÑнÑе опеÑаÑии (обÑаÑиÑе внимание: ÑÑловнÑй опеÑаÑÐ¾Ñ Ð°ÑÑоÑиаÑивен ÑпÑава):
const firstCheck = false;
const secondCheck = false;
const access = firstCheck
? "ÐоÑÑÑп запÑеÑÑн"
: secondCheck
? "ÐоÑÑÑп запÑеÑÑн"
: "ÐоÑÑÑп ÑазÑеÑÑн";
console.log(access); // вÑÐ²Ð¾Ð´Ð¸Ñ Ð² конÑÐ¾Ð»Ñ "ÐоÑÑÑп ÑазÑеÑÑн"
ТеÑнаÑнÑе опеÑаÑии можно иÑполÑзоваÑÑ Ð¸ Ñами по Ñебе - Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑазлиÑнÑÑ Ð¾Ð¿ÐµÑаÑий:
const age = 16;
let stop = false;
age > 18 ? location.assign("continue.html") : (stop = true);
Также возможно вÑполнÑÑÑ Ð½ÐµÑколÑко опеÑаÑий на каждое ÑÑавнение, Ñазделив Ð¸Ñ Ð·Ð°Ð¿ÑÑÑми:
const age = 23;
let stop = false;
age > 18
? (alert("ХоÑоÑо, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе пÑодолжиÑÑ."), location.assign("continue.html"))
: ((stop = true), alert("ÐÑоÑÑиÑе, Ð²Ñ ÐµÑÑ Ñак ÑнÑ!"));
ÐÑи пÑиÑвоении знаÑÐµÐ½Ð¸Ñ Ñакже возможно вÑполнение более одной опеÑаÑии. Ð ÑÑом ÑлÑÑае пеÑеменной бÑÐ´ÐµÑ Ð¿ÑиÑвоено Ñо знаÑение, коÑоÑое ÑÑÐ¾Ð¸Ñ Ð¿Ð¾Ñледним в ÑпиÑке знаÑений, ÑазделÑннÑÑ Ð·Ð°Ð¿ÑÑой.
const age = 16;
const url =
age > 18
? (alert("ХоÑоÑо, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе пÑодолжиÑÑ."),
// alert веÑнÑÑ "undefined", но ÑÑо бÑÐ´ÐµÑ Ð¿ÑоигноÑиÑовано, поÑÐ¾Ð¼Ñ ÑÑо
// не ÑвлÑеÑÑÑ Ð¿Ð¾Ñледним в ÑпиÑке знаÑений, ÑазделÑннÑÑ
запÑÑой
"continue.html") // знаÑение бÑÐ´ÐµÑ Ð¿ÑиÑвоено, еÑли age > 18
: (alert("ÐÑ ÑлиÑком молодÑ!"), alert("ÐÑоÑÑиÑе :-("), "stop.html"); // знаÑение бÑÐ´ÐµÑ Ð¿ÑиÑвоено, еÑли age < 18
location.assign(url); // "stop.html"
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification > # sec-conditional-operator > |