JavaScriptде төрт логикалык оператор бар: ||
(ЖЕ), &&
(ЖАНА) жана !
(NOT), ??
(Null Merge Operator). Бул жерде биз биринчи үч карап чыгабыз, оператор ??
кийинки макалада болот.
Алардын атына карабастан, бул операторлор ар кандай түрдөгү баалуулуктарга колдонулушу мүмкүн. Алынган натыйжалар дагы башка түрдөгү болушу мүмкүн.
Келгиле, аларды кененирээк карап көрөлү.
|| (ЖЕ)
"OR" оператору кош түтүк белгисине окшош:
result = a || b;
Салттуу түрдө программалоодо ЖЕ логикалык маанилерди манипуляциялоо үчүн гана колдонулат: аргументтердин кайсынысы болсо true
, ал кайтарат true
, антпесе кайтарат false
.
JavaScript'те, биз кийинчерээк көрөбүз, бул оператор бир аз башкача иштейт. Бирок келгиле, адегенде логикалык баалуулуктарга эмне болорун карап көрөлү.
Төрт гана логикалык айкалышы бар:
true
Көрүнүп тургандай, эки аргумент тең болгондон башка учурларда, операциялардын натыйжасы ар дайым болот false
.
Эгерде маани логикалык типте болбосо, анда ал эсептөө максатында ага чыгарылат.
Мисалы, сан , жана - катары 1
кабыл алынат :true
0
false
Эреже катары, оператор берилген шарттардын ар биринин чындыгын текшерүү үчүн ||
колдонулат .if
Мисалга:
Сиз көбүрөөк шарттарды тапшыра аласыз:
ЖЕ "||" биринчи чыныгы баасын табат
Жогоруда айтылган логика салттуу логикага туура келет. Эми JavaScriptтин "кошумча" функциялары менен иштейли.
Кеңейтилген алгоритм төмөнкүдөй иштейт.
||
ЖЕ бир нече маанилерди аткарууда :
@A@result = value1 || value2 || value3;@A@
Оператор ||
төмөнкү аракеттерди аткарат:
- Операндтарды солдон оңго карай баалайт.
- Ар бир операнд логикалык мааниге айланат. Эгерде натыйжа болсо
true
, токтойт жана ошол операнддын баштапкы маанисин кайтарат. - Эгерде бардык операнддар жалган болсо (
false
), акыркысын кайтарат.
Мааниси конверсиясыз, баштапкы түрүндө кайтарылат.
Башка сөз менен айтканда, ЖЕ чынжыр ||
биринчи чыныгы маанини кайтарат, же андай маани табылбаса акыркысын.
Мисалы:
Бул оператордун "таза, салттуу, логикалык гана ЖЕ"ге караганда кызыктуу тиркемелерине мүмкүнчүлүк берет.
-
Өзгөрмөлөрдүн же туюнтмалардын тизмесинен биринчи чыныгы маанини алуу.
Келгиле, бизде маалыматтарды камтыган же болушу мүмкүн болгон бир катар өзгөрмөлөр бар деп элестетип көрөлү
null/undefined
. Биринчи өзгөрмөнү маалымат менен кантип таба алабыз?менен
||
:Эгерде жана
currentUser
, жанаdefaultUser
жалган болсо, биз байкамакпыз"unnamed"
. -
Кыскартылган эсептөө.
Операндтар бир баалуулуктар же эркин туюнтмалар болушу мүмкүн. ЖЕ
||
аларды солдон оңго карай баалайт. Эсептөө биринчи чыныгы мааниге жеткенде токтойт. Бул процесс "кыскартылган баалоо" деп аталат, анткени экинчи операнд биринчи операнд бүтүндөй туюнтманы баалоо үчүн жетиштүү болбосо гана бааланат.Бул экинчи аргумент катары берилген туюнтма өзгөрмөнү өзгөртүү сыяктуу терс таасирге ээ болгондо абдан байкалат.
Төмөндөгү мисал
x
өзгөрбөйт:Эгерде биринчи аргументтин мааниси болсо
false
, анда||
биз экинчисин эсептөөгө өтүп, дайындоо операциясын аткарабыз:false || (x = 1);
alert(x); // 1@A@
Тапшыруу бир эле мисал. Албетте, эсептөө аларга жетпесе, көрүнбөй турган башка терс таасирлер болушу мүмкүн.
Көрүнүп тургандай, бул колдонуу учуру
||
"аналогдукif
". Биринчи операнд логикага айландырылат. Эгер жалган болуп чыкса, экинчисинин эсеби башталат.if
Көпчүлүк учурларда, кодду түшүнүүнү жеңилдетүү үчүн "жөнөкөй" дегенди колдонуу жакшы , бирок кээде бул ыңгайлуу болушу мүмкүн.
&& (ЖАНА)
ЖАНА оператору эки амперсанд катары жазылат &&
:
@A@result = a && b;@A@
Салттуу программалоодо true
AND эки аргумент тең туура болсо кайтарат, антпесе false
:
@A@alert( true && true ); // true
alert( false && true ); // false
alert( true && false ); // false
alert( false && false ); // false@A@
if
: менен мисал
let minute = 30;
if (hour == 12 && minute == 30) {
alert( 'The time is 12:30' );
}@A@
if сыяктуу эле, ар кандай мааниге elseоперанды катары уруксат берилет:
alert( "иштебейт , себеби жообу жалган" );
}@A@
Ал эми "&&" биринчи жалган маанини табат
Бир нече ырааттуу ЖАНА операторлору менен:
result = value1 && value2 && value3;
Оператор &&
төмөнкү аракеттерди аткарат:
- Операндтарды солдон оңго карай баалайт.
- Ар бир операнд логикалык мааниге айланат. Эгерде натыйжа болсо
false
, токтойт жана ошол операнддын баштапкы маанисин кайтарат. - Эгерде бардык операнддар чын болсо, акыркысы кайтарылат.
Башка сөз менен айтканда, ЖАНА биринчи жалган маанини кайтарат. Же эч нерсе табылбаса акыркысы.
Жогорудагы эрежелер ЖЕнин жүрүм-турумуна окшош. Айырмасы AND биринчи жалган маанини кайтарат, ал эми OR биринчи чыныгы маанини кайтарат .
Мисалдар:
//жана экинчини кайтарылат:
alert( 1 && 0 ); // 0
alert( 1 && 5 ); // 5
// Если биринчи операнд ката болсо,
//жана кайтаратбэкинчи операнд игнор болот
alert( null && 5 ); // null
alert( 0 && "no matter what" ); // 0@A@
Сиз катары менен бир нече маанилерди өткөрө аласыз. Бул учурда, эсептөөлөр токтогон биринчи "жалган" маани кайтарылат.
Бардык баалуулуктар туура болгондо, акыркысы кайтарылат.
&&
жогору||
ЖАНА операторунун артыкчылыгы &&
ЖЕ операторуна караганда чоңураак ||
, ошондуктан ал биринчи аткарылат.
Ошентип, код негизинен кашаадагы a && b || c && d
туюнтмалар менен бирдей : .&&
(a && b) || (c && d)
ЖЕ оператору сыяктуу ||
AND &&
кээде алмаштыра алат if
.
Мисалга:
(x > 0) && alert( 'Greater than zero!' );@A@
Оң тараптагы иш-аракет, &&
эгерде эсептөөлөр ага жеткенде гана аткарылат. Башкача айтканда, ал сол жагында болсо alert
иштейт ( .x > 0)
true
Натыйжада окшош:
if (x > 0) {
alert( 'Greater than zero!' );
}@A@
Бирок, эреже катары, менен вариант if
жакшыраак окулат жана кабыл алынат.
Бул ачык-айкын, ошондуктан аны колдонуу жакшы.
! (ЭМЕС)
NOT оператору илеп белгиси менен көрсөтүлөт !
.
Синтаксис абдан жөнөкөй:
result = !value;
Оператор бир аргументти алып, төмөнкүнү аткарат:
- Алгач аргументти логикалык түргө чыгарат
true/false
. - Андан кийин карама-каршы маанини кайтарат.
Мисалы:
alert( !0 ); // true@A@
Атап айтканда, кош ЭМЕС !!
маанилерди логикалык түргө айландыруу үчүн колдонулат:
alert( !!null ); // false@A@
Башкача айтканда, биринчиси маанини логикага айландырбайт жана тескерисин кайтарат, ал эми экинчиси аны кайра ИНВЕРТТЕБЕЙТ. Акыр-аягы, биз жөнөкөй маанини логикалык өзгөртүүгө ээбиз.
Муну жасоонун бир аз көбүрөөк жолу бар - орнотулган функция Boolean
:
alert( Boolean(null) ); // false@A@
NO артыкчылыктуулугу !
бардык логикалык операторлордун эң жогоркусу, ошондуктан ал ар дайым биринчи, &&
же алдында аткарылат ||
.
Tasks
Төмөнкү код эмнени чыгарат?
alert( null || 2 || undefined );
Төмөнкү код эмнени чыгарат?
alert( alert(1) || 2 || alert(3) );
Төмөнкү код эмнени чыгарат?
alert( 1 && null && 2 );
Төмөнкү код эмнени чыгарат?
alert( alert(1) && alert(2) );
Төмөнкү код эмнени чыгарат?
alert( null || 2 && 3 || 4 );
if
Өзгөрмөнүн age
ортосунда 14
жана камтылгандыгын текшерүү үчүн шарт жазыңыз 90
.
"Камтыган" өзгөрмөнүн мааниси же age
барабар болушу мүмкүн экенин билдирет .14
90
if
Өзгөрмөнүн мааниси age
диапазондо ЖОК 14
жана камтылгандыгын текшерүү үчүн шарт жазыңыз 90
.
Эки вариантты жазыңыз: биринчиси NOT операторун колдонуп !
, экинчиси бул операторсуз.
Төмөнкүлөрдүн кайсынысы alert
иштейт?
Кандай конкреттүү баалуулуктар шарттарда туюнтмалардын натыйжалары болот if(...)
?
if (-1 || 0) alert( 'first' );
if (-1 && 0) alert( 'second' );
if (null || -1 && 1) alert( 'third' );
колдонуу менен кирүү үчүн сурай турган кодду жаз prompt
.
Эгер конок "Админге" кирсе, анда prompt
ал сырсөздү сурайт, эч нерсе кирбесе же баскыч басылса Esc- "Жокко чыгарылды" көрсөтүү, болбосо "Мен сени тааныбайм" дегенди көрсөтүү.
Сырсөздү төмөнкүдөй текшериңиз:
- Эгерде "Мен жооптуумун" сырсөзү киргизилсе, анда "Салам!"
- Болбосо - "Жараксыз сырсөз",
- Эгерде жокко чыгарылса - "Жокко чыгарылды".
Чечүү үчүн уяланган блокторду колдонуңуз if
. Коддун стилине жана окулушуна көңүл буруңуз.
Ишара: Бош киргизүүнү чакырууга өткөрүү, prompt
бош сапты кайтарат ''
. EscСуроо учурунда баскычты басуу кайтарып берет null