Baseline Widely available
ÐогиÑеÑкий опеÑаÑÐ¾Ñ Ð (&&
) (конÑÑнкÑиÑ) Ð´Ð»Ñ Ð½Ð°Ð±Ð¾Ñа опеÑандов Ñо знаÑением Ñипа Boolean
бÑÐ´ÐµÑ true
ÑолÑко в ÑлÑÑае, еÑли вÑе опеÑÐ°Ð½Ð´Ñ ÑодеÑÐ¶Ð°Ñ Ð·Ð½Ð°Ñение true
. РпÑоÑивном ÑлÑÑае ÑÑо бÑÐ´ÐµÑ false
.
Ð Ñелом, опеÑаÑÐ¾Ñ Ð²ÐµÑнÑÑ Ð·Ð½Ð°Ñение пеÑвого ложноподобного опеÑанда пÑи вÑÑиÑлении, либо знаÑение поÑледнего опеÑанда, еÑли вÑе опеÑÐ°Ð½Ð´Ñ Ð¾ÐºÐ°Ð·Ð°Ð»Ð¸ÑÑ Ð¸ÑÑиноподобнÑми.
ÐнÑеÑакÑивнÑй пÑимеÑconst a = 3;
const b = -2;
console.log(a > 0 && b > 0);
// Expected output: false
СинÑакÑÐ¸Ñ ÐпиÑание
ÐогиÑеÑкое Ð (&&
) вÑÑиÑлÑÐµÑ Ð¾Ð¿ÐµÑÐ°Ð½Ð´Ñ Ñлева напÑаво, возвÑаÑÐ°Ñ ÑÑÐ°Ð·Ñ Ð·Ð½Ð°Ñение пеÑвого попавÑего ложноподобного опеÑанда; еÑли вÑе знаÑÐµÐ½Ð¸Ñ Ð¸ÑÑиноподобнÑ, возвÑаÑаеÑÑÑ Ð·Ð½Ð°Ñение поÑледнего опеÑанда.
ÐÑли знаÑение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑеобÑазовано в true
, Ñо оно ÑаÑÑмаÑÑиваеÑÑÑ ÐºÐ°Ðº иÑÑиноподобное (truthy). ÐÑли же знаÑение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑеобÑазовано в false
, Ñо оно назÑваеÑÑÑ Ð»Ð¾Ð¶Ð½Ð¾Ð¿Ð¾Ð´Ð¾Ð±Ð½Ñм (falsy).
ÐÑимеÑÑ Ð²ÑÑажений, коÑоÑÑе могÑÑ Ð±ÑÑÑ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ñ Ð² false
:
false
;null
;NaN
;0
;""
, ''
, ``
);undefined
.ÐпеÑаÑÐ¾Ñ Ð Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ð½ÐµÐ±ÑÐ»ÐµÐ²Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÐºÐ°Ðº еÑÑÑ:
result = "" && "foo"; // result is assigned "" (empty string)
result = 2 && 0; // result is assigned 0
result = "foo" && 4; // result is assigned 4
ÐеÑмоÑÑÑ Ð½Ð° Ñо, ÑÑо опеÑаÑÐ¾Ñ &&
Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ñ Ð¾Ð¿ÐµÑандами, не ÑодеÑжаÑие логиÑеÑкиÑ
знаÑений, он вÑÑ Ñавно оÑÑанеÑÑÑ Ð±ÑлевÑм опеÑаÑоÑом, поÑколÑÐºÑ ÐµÐ³Ð¾ возвÑаÑаемое знаÑение вÑегда можно пÑеобÑазоваÑÑ Ð² бÑлевÑй пÑимиÑив. ЧÑÐ¾Ð±Ñ Ñвно пÑеобÑазоваÑÑ Ð²Ð¾Ð·Ð²ÑаÑаемое знаÑение ÑÑого опеÑаÑоÑа (или вообÑе лÑбое вÑÑажение) в ÑооÑвеÑÑÑвÑÑÑее знаÑение бÑлевого Ñипа, иÑполÑзÑйÑе двойной опеÑаÑÐ¾Ñ ÐÐ
или конÑÑÑÑкÑÐ¾Ñ Boolean
.
ÐпеÑаÑÐ¾Ñ Ð»Ð¾Ð³Ð¸ÑеÑкого РвÑÑиÑлÑÐµÑ Ð²ÑÑажение по ÑокÑаÑÑнной ÑÑ
еме. ÐаждÑй опеÑанд пÑиводиÑÑÑ Ðº бÑÐ»ÐµÐ²Ð¾Ð¼Ñ Ð·Ð½Ð°ÑениÑ, еÑли ÑезÑлÑÑÐ°Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÐºÐ°Ð·ÑваеÑÑÑ false
, Ñогда опеÑаÑÐ¾Ñ Ð Ð¾ÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð´Ð°Ð»ÑнейÑее вÑÑиÑление вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ возвÑаÑÐ°ÐµÑ Ð¸ÑÑ
одное знаÑение ÑÑого ложноподобного опеÑанда. ÐоÑÑÐ¾Ð¼Ñ Ð¾ÑÑавÑиеÑÑ Ð¾Ð¿ÐµÑÐ°Ð½Ð´Ñ Ð½Ðµ бÑдÑÑ Ð²ÑÑиÑленÑ.
РкаÑеÑÑве пÑимеÑа ÑаÑÑмоÑÑим ÑледÑÑÑий пÑевдокод.
(ложноподобное вÑÑажение) && ÑледÑÑÑее вÑÑажение
ÐоÑколÑÐºÑ Ð¿ÐµÑвÑй опеÑанд (ложноподобное вÑÑажение)
Ð¸Ð¼ÐµÐµÑ Ð»Ð¾Ð¶Ð½Ð¾Ðµ знаÑение, Ñо ÑледÑÑÑее вÑÑажение
никогда не бÑÐ´ÐµÑ Ð²ÑÑиÑлено. ÐÑли ÑледÑÑÑее вÑÑажение
ÑодеÑжало ÑÑнкÑиÑ, Ñо она Ð±Ñ Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° не бÑла вÑзвана. ÐоÑмоÑÑиÑе пÑÐ¸Ð¼ÐµÑ Ð½Ð¸Ð¶Ðµ:
function A() {
console.log("вÑзвана ÑÑнкÑÐ¸Ñ A");
return false;
}
function B() {
console.log("вÑзвана ÑÑнкÑÐ¸Ñ B");
return true;
}
console.log(A() && B());
// Ð ÑезÑлÑÑаÑе вÑзова ÑÑнкÑии A, в конÑоли бÑÐ´ÐµÑ Ð²Ñведено "вÑзвана ÑÑнкÑÐ¸Ñ A",
// а опеÑаÑÐ¾Ñ && вÑÑиÑлиÑÑÑ ÐºÐ°Ðº false (ÑÑнкÑÐ¸Ñ A возвÑаÑÐ°ÐµÑ false), поÑÑÐ¾Ð¼Ñ Ð´Ð°Ð»ÐµÐµ в конÑоли поÑвиÑÑÑ false;
// вÑледÑÑвие ÑÑого опеÑаÑÐ¾Ñ Ð Ð¿ÑекÑаÑÐ¸Ñ Ð²ÑÑиÑление и пÑоигноÑиÑÑÐµÑ ÑÑнкÑÐ¸Ñ B
ÐÑиоÑиÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑов
ÐпеÑаÑÐ¾Ñ Ð Ð¸Ð¼ÐµÐµÑ Ð±Ð¾Ð»ÐµÐµ вÑÑокий пÑиоÑиÑеÑ, Ñем опеÑаÑÐ¾Ñ ÐÐÐ, поÑÑÐ¾Ð¼Ñ Ð¾Ð¿ÐµÑаÑÐ¾Ñ &&
вÑполниÑÑÑ ÑанÑÑе опеÑаÑоÑа ||
(Ñм. пÑиоÑиÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑов).
false || (true && true); // веÑнÑÑ true
true && (false || false); // веÑнÑÑ false
2 == 3 || (4 < 0 && 1 == 1); // веÑнÑÑ false
ÐÑимеÑÑ ÐÑполÑзование опеÑаÑоÑа Ð
Ð ÑледÑÑÑем коде Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ð¿ÑимеÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа &&
(логиÑеÑкое Ð).
a1 = true && true; // t && t веÑнÑÑ true
a2 = true && false; // t && f веÑнÑÑ false
a3 = false && true; // f && t веÑнÑÑ false
a4 = false && 3 == 4; // f && f веÑнÑÑ false
a5 = "Cat" && "Dog"; // t && t веÑнÑÑ "Dog"
a6 = false && "Cat"; // f && t веÑнÑÑ false
a7 = "Cat" && false; // t && f веÑнÑÑ false
a8 = "" && false; // f && f веÑнÑÑ ""
a9 = false && ""; // f && f веÑнÑÑ false
ÐÑавила пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±ÑлевÑÑ
знаÑений ÐонвеÑÑаÑÐ¸Ñ Ð Ðº ÐÐÐ
СледÑÑÑÐ°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ñ Ð±ÑлевÑми знаÑениÑми:
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