Baseline Widely available
ÐогиÑеÑкий опеÑаÑÐ¾Ñ ÐÐÐ (||
) (дизÑÑнкÑиÑ) Ð´Ð»Ñ Ð½Ð°Ð±Ð¾Ñа опеÑандов иÑÑинен бÑÐ´ÐµÑ true
ÑолÑко в ÑлÑÑае, еÑли один или неÑколÑко его опеÑандов имеÑÑ Ð·Ð½Ð°Ñение true
.
ÐбÑÑно иÑполÑзÑеÑÑÑ Ñ Ð±ÑлевÑми
(логиÑеÑкими) знаÑениÑми. Тогда возвÑаÑаеÑÑÑ Ð±Ñлевое знаÑение. Ðднако ÑакÑиÑеÑки опеÑаÑÐ¾Ñ ||
возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение одного из опеÑандов, поÑÑÐ¾Ð¼Ñ ÐµÑли ÑÑÐ¾Ñ Ð¾Ð¿ÐµÑаÑÐ¾Ñ Ð¸ÑполÑзÑеÑÑÑ Ñ Ð½ÐµÐ±ÑлевÑми знаÑениÑми, он веÑÐ½ÐµÑ Ð½ÐµÐ±Ñлевое знаÑение.
const a = 3;
const b = -2;
console.log(a > 0 || b > 0);
// Expected output: true
СинÑакÑÐ¸Ñ ÐпиÑание
ÐÑли expr1
Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑеобÑазовано в true
, Ñо веÑнÑÑÑÑ expr1
; в пÑоÑивном ÑлÑÑае возвÑаÑаеÑÑÑ expr2
.
ÐÑли знаÑение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑеобÑазовано в true
, Ñо оно ÑаÑÑмаÑÑиваеÑÑÑ ÐºÐ°Ðº иÑÑиноподобное (truthy). ÐÑли же знаÑение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑеобÑазовано в false
, Ñо оно назÑваеÑÑÑ Ð»Ð¾Ð¶Ð½Ð¾Ð¿Ð¾Ð´Ð¾Ð±Ð½Ñм (falsy).
ÐÑимеÑÑ Ð²ÑÑажений, коÑоÑÑе могÑÑ Ð±ÑÑÑ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ñ Ð² false
:
null
;NaN
;0
;""
, ''
, ``
);undefined
.ÐеÑмоÑÑÑ Ð½Ð° Ñо, ÑÑо опеÑаÑÐ¾Ñ ||
Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ñ Ð¾Ð¿ÐµÑандами без логиÑеÑкиÑ
знаÑений, ÑÑо вÑÑ Ñавно бÑлевÑй опеÑаÑоÑ, поÑколÑÐºÑ ÐµÐ³Ð¾ возвÑаÑаемое знаÑение вÑегда можно пÑеобÑазоваÑÑ Ð² бÑлевÑй пÑимиÑив. ЧÑÐ¾Ð±Ñ Ñвно пÑеобÑазоваÑÑ Ð²Ð¾Ð·Ð²ÑаÑаемое знаÑение ÑÑого опеÑаÑоÑа (или вообÑе лÑбое вÑÑажение) в ÑооÑвеÑÑÑвÑÑÑее знаÑение бÑлевого Ñипа, иÑполÑзÑйÑе двойной опеÑаÑÐ¾Ñ ÐÐ
или конÑÑÑÑкÑÐ¾Ñ Boolean
.
ÐпеÑаÑÐ¾Ñ Ð»Ð¾Ð³Ð¸ÑеÑкого ÐÐРвÑÑиÑлÑеÑÑÑ Ñлева напÑаво, Ð´ÐµÐ»Ð°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñм ÑокÑаÑÑнное вÑÑиÑление вÑÑажениÑ, ÑоглаÑно ÑледÑÑÑÐµÐ¼Ñ Ð¿ÑавилÑ:
(иÑÑинноподобное вÑÑажение) || ÑледÑÑÑее вÑÑажение
â вÑÑиÑление оÑÑанавливаеÑÑÑ Ð½Ð° иÑÑинноподобном вÑÑажении;
СокÑаÑенное вÑÑиÑление Ñ
оÑоÑо Ñем, ÑÑо ÑледÑÑÑее вÑÑажение
не бÑÐ´ÐµÑ Ð²ÑÑиÑлено, Ñ.е. вÑÑ, ÑвÑзанное Ñ Ð½Ð¸Ð¼, бÑÐ´ÐµÑ Ð¿ÑоигноÑиÑовано (напÑимеÑ, еÑли ÑледÑÑÑее вÑÑажение
пÑедÑÑавлÑÐµÑ Ñобой вÑзов ÑÑнкÑии, Ñо он никогда не пÑоизойдÑÑ). ÐÑÑ Ð¿Ð¾ÑомÑ, ÑÑо знаÑение опеÑаÑоÑа извеÑÑно Ñже поÑле вÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð¿ÐµÑвого опеÑанда. ÐоÑмоÑÑиÑе на пÑимеÑ:
function A() {
console.log("вÑзвана ÑÑнкÑÐ¸Ñ A");
return false;
}
function B() {
console.log("вÑзвана ÑÑнкÑÐ¸Ñ B");
return true;
}
console.log(B() || A());
// Ð ÑезÑлÑÑаÑе вÑзова ÑÑнкÑии B, в конÑоли бÑÐ´ÐµÑ Ð²Ñведено "вÑзвана ÑÑнкÑÐ¸Ñ B",
// а далее в конÑоли поÑвиÑÑÑ false (ÑÑо ÑезÑлÑÑÐ°Ñ Ð¾Ð¿ÐµÑаÑоÑа)
ÐÑиоÑиÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑов
СледÑÑÑие вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ ÑквиваленÑнÑми, но ÑÑо не Ñак, поÑÐ¾Ð¼Ñ ÑÑо опеÑаÑÐ¾Ñ &&
вÑполнÑеÑÑÑ Ð´Ð¾ опеÑаÑоÑа ||
(Ñм. пÑиоÑиÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑов).
true || (false && false); // веÑнÑÑ true, поÑколÑÐºÑ ÑнаÑала вÑÑиÑлÑеÑÑÑ &&
(true || false) && false; // веÑнÑÑ false, поÑколÑÐºÑ Ñ Ð³ÑÑппиÑовки вÑÑе пÑиоÑиÑеÑ
ÐÑимеÑÑ ÐÑполÑзование опеÑаÑоÑа ÐÐÐ
Ð ÑледÑÑÑем коде Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ð¿ÑимеÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа ||
(логиÑеÑкое ÐÐÐ).
o1 = true || true; // t || t веÑнÑÑ true
o2 = false || true; // f || t веÑнÑÑ true
o3 = true || false; // t || f веÑнÑÑ true
o4 = false || 3 == 4; // f || f веÑнÑÑ false
o5 = "Cat" || "Dog"; // t || t веÑнÑÑ "Cat"
o6 = false || "Cat"; // f || t веÑнÑÑ "Cat"
o7 = "Cat" || false; // t || f веÑнÑÑ "Cat"
o8 = "" || false; // f || f веÑнÑÑ false
o9 = false || ""; // f || f веÑнÑÑ ""
o10 = false || varObject; // f || object веÑнÑÑ varObject
ÐÑимеÑание: ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе ÑÑÐ¾Ñ Ð¾Ð¿ÐµÑаÑоÑ, ÑÑÐ¾Ð±Ñ Ð·Ð°Ð´Ð°ÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑой пеÑеменной, имейÑе в видÑ, ÑÑо лÑбое ложноподобное бÑÐ´ÐµÑ Ð¿ÑоигноÑиÑовано. ÐÑли вам нÑжно иÑклÑÑиÑÑ ÑолÑко null
или undefined
, попÑобÑйÑе воÑполÑзоваÑÑÑÑ Ð¾Ð¿ÐµÑаÑоÑом нÑлевого ÑлиÑниÑ.
СледÑÑÑÐ°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ñ Ð±ÑлевÑми знаÑениÑми:
bCondition1 && bCondition2;
вÑегда ÑквиваленÑна:
!(!bCondition1 || !bCondition2);
ÐонвеÑÑаÑÐ¸Ñ ÐÐРв Ð
СледÑÑÑÐ°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ñ Ð±ÑлевÑми знаÑениÑми:
bCondition1 || bCondition2;
вÑегда ÑквиваленÑна:
!(!bCondition1 && !bCondition2);
Удаление вложеннÑÑ
кÑÑглÑÑ
Ñкобок
ÐоÑколÑÐºÑ Ð»Ð¾Ð³Ð¸ÑеÑкие вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑÑиÑлÑÑÑÑÑ Ñлева напÑаво, вÑегда можно ÑдалиÑÑ ÐºÑÑглÑе Ñкобки из Ñложного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñи ÑÑловии ÑоблÑÐ´ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделеннÑÑ Ð¿Ñавил.
СледÑÑÑÐ°Ñ ÑоÑÑÐ°Ð²Ð½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ñ Ð±ÑлевÑми знаÑениÑми:
bCondition1 && (bCondition2 || bCondition3);
вÑегда ÑквиваленÑна:
!(!bCondition1 || (!bCondition2 && !bCondition3));
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4