diff --git a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md index 478586635..99bc1d5e2 100644 --- a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md +++ b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/solution.md @@ -1,5 +1,5 @@ Պատասխանը `2` է, քանի որ այն առաջին ճշմարիտ արժեքն է։ ```js run -alert(null || 2 || undefined) +alert( null || 2 || undefined ); ``` diff --git a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md index 27b63d235..27e56f58b 100644 --- a/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md +++ b/1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md @@ -1,4 +1,4 @@ -Կարևորություն: 5 +importance: 5 --- @@ -7,5 +7,5 @@ Ի՞նչ կտպի ներքևում գրված ծրագիրը։ ```js -alert(null || 2 || undefined) +alert( null || 2 || undefined ); ``` diff --git a/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md b/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md index e8aa3387a..a06dd4d88 100644 --- a/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md +++ b/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md @@ -1,13 +1,13 @@ Այն կտպի `1`, այնուհետև `2`։ ```js run -alert(alert(1) || 2 || alert(3)) +alert( alert(1) || 2 || alert(3) ); ``` -`alert`֊ի կանչը չի վերադարձնում ոչ մի արժեք։ Կամ այլ կերպա ասած վերադարձնում է `undefined`։ +`alert`֊ի կանչը չի վերադարձնում ոչ մի արժեք։ Կամ այլ կերպ ասած վերադարձնում է `undefined`։ -1. Սկզբում ԿԱՄ `||`֊ը հաշվում(evaluates) է իր ձախ կողմի օպերանդը՝ `alert(1)`, որն էլ էկրանին ցույց է տալիս `1` արժեքը։ +1. Սկզբում ԿԱՄ `||`֊ը հաշվում (evaluates) է իր ձախ կողմի օպերանդը՝ `alert(1)`, որն էլ էկրանին ցույց է տալիս `1` արժեքը։ 2. `alert`֊ը վերադարձնում է `undefined`։ ԿԱՄ֊ը անցնում է երկրորդ օպերանդին՝ որոնելով ճշմարիտ արժեք։ -3. Երկրորդ օպերանդը `2` է, որը ճշմարիտ է, և ԿԱՄ֊ը դադարացնում է իր հաշվարկները։ `2`֊ը վերադարձվում է և ցուցադրվում էկրանին դրսի `alert`֊ի միջոցով։ +3. Երկրորդ օպերանդը `2` է, որը ճշմարիտ է, և ԿԱՄ֊ը դադարեցնում է իր հաշվարկները։ `2`֊ը վերադարձվում է և ցուցադրվում էկրանին դրսի `alert`֊ի միջոցով։ `3`֊ը չի երևա էկրանին, քանի որ ԿԱՄ֊ը կանգ է առնում երկրորդ օպերանդի վրա և չի հասնում `alert(3)`֊ին։ diff --git a/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md b/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md index bf4578517..3bcfcea8b 100644 --- a/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md +++ b/1-js/02-first-steps/11-logical-operators/2-alert-or/task.md @@ -1,4 +1,4 @@ -Կարևորություն: 3 +importance: 3 --- @@ -7,5 +7,5 @@ Ի՞նչ կտպի ներքևում գրված ծրագիրը։ ```js -alert(alert(1) || 2 || alert(3)) +alert( alert(1) || 2 || alert(3) ); ``` diff --git a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md index 832e2cede..7ea607ed1 100644 --- a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md +++ b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md @@ -1,6 +1,6 @@ Պատասխանը `null` է, քանի որ այն առաջին սխալական արժեքն է։ ```js run -alert(1 && null && 2) +alert( 1 && null && 2 ); ``` diff --git a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md index 2c3458af3..e46adfb69 100644 --- a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md +++ b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md @@ -1,4 +1,4 @@ -Կարևորություն: 5 +importance: 5 --- @@ -7,5 +7,5 @@ Ի՞նչ կտպի ներքևում գրված ծրագիրը։ ```js -alert(1 && null && 2) +alert( 1 && null && 2 ); ``` diff --git a/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md b/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md index f6dad7201..ac1846ec0 100644 --- a/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md +++ b/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md @@ -1,7 +1,7 @@ Այն կտպի `1`, այնուհետև `undefined`։ ```js run -alert(alert(1) && alert(2)); +alert( alert(1) && alert(2) ); ``` `alert`֊ի կանչը տպում է էկրանին և վերադարձնում `undefined`։ diff --git a/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md b/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md index 8b64e2636..aa31c87fa 100644 --- a/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md +++ b/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md @@ -1,4 +1,4 @@ -Կարևորություն: 3 +importance: 3 --- @@ -7,5 +7,5 @@ Ի՞նչ կտպի ներքևում գրված ծրագիրը։ ```js -alert(alert(1) && alert(2)) +alert( alert(1) && alert(2) ); ``` diff --git a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md index dcc5ee0ff..3ce663f1f 100644 --- a/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md +++ b/1-js/02-first-steps/11-logical-operators/5-alert-and-or/task.md @@ -1,4 +1,4 @@ -Կարևորություն: 5 +importance: 5 --- diff --git a/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md b/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md index c025cd8c6..2ca505d31 100644 --- a/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md +++ b/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md @@ -1,4 +1,4 @@ -Կարևորություն: 3 +importance: 3 --- diff --git a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md index 698f9bce4..86aca175f 100644 --- a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md +++ b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md @@ -1,4 +1,4 @@ -Կարևորություն: 3 +importance: 3 --- diff --git a/1-js/02-first-steps/11-logical-operators/8-if-question/task.md b/1-js/02-first-steps/11-logical-operators/8-if-question/task.md index 7be8bb7d2..24dc9d396 100644 --- a/1-js/02-first-steps/11-logical-operators/8-if-question/task.md +++ b/1-js/02-first-steps/11-logical-operators/8-if-question/task.md @@ -1,4 +1,4 @@ -Կարևորություն: 5 +importance: 5 --- diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/ifelse_task.svg b/1-js/02-first-steps/11-logical-operators/9-check-login/ifelse_task.svg index 148b4cdab..020126cb8 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/ifelse_task.svg +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/ifelse_task.svg @@ -1,206 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ՍկիզբՉեղարկված էՉեղարկված էԲարի գալուստՉեմ ճանաչում քեզՍխալ գաղտնաբառՈ՞վ էԳաղտնաբառը՞ՉեղարկելՉեղարկելԱդմինԳլխավորՈւրիշՈւրիշ \ No newline at end of file diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md index 68a51b0ee..26c628d12 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md @@ -22,4 +22,4 @@ if (userName === 'Ադմին') { } ``` -Ուշադրություն դարձրեք ուղղահայաց խորություններին(indents) `if` բլոկների ներսում։ Դրանք պարտադիր չեն, բայց դարձնում են ծրագիրը ավելի ընոեռնելի։ +Ուշադրություն դարձրեք ուղղահայաց խորություններին (indents) `if` բլոկների ներսում։ Դրանք պարտադիր չեն, բայց դարձնում են ծրագիրը ավելի ընթեռնելի։ diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/task.md b/1-js/02-first-steps/11-logical-operators/9-check-login/task.md index eb3a7f2e8..a02b60d84 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/task.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/task.md @@ -1,10 +1,10 @@ -Կարևորություն: 3 +importance: 3 --- # Մուտքի ստուգում (login) -Գրեք ծրագիր, որը կպահանջի մուտքի օգտագործելով `prompt`֊ը։ +Գրեք ծրագիր, որը կպահանջի մուտք գործել, օգտագործելով `prompt`֊ը։ Եթե օգտատերը կմուտքագրի `"Ադմին"`, ապա կբացվի `prompt` գաղտնաբառի համար, եթե ոչինչ չմուտքագրի կամ սեղմի `Esc` ստեղնը -- կցուցադրվի "Չեղարկված է", եթե մեկ այլ տողային արժեք մուտքագրվի, ապա կցուցադրվի "Չեմ ճանաչում քեզ"։ @@ -12,7 +12,7 @@ - Եթե այն "Գլխավոր" է, ապա ցուցադրվում է "Բարի գալուստ", - Ուրիշ տողային արժեքի դեպքում ցուցադրվում է "Սխալ գաղտնաբառ", -- Դատարի տողի և չեղարկված(cancelled) դեպքերում ցուցադրվում է "Չեղարկված է" +- Դատարկ տողի և չեղարկված (cancelled) դեպքերում ցուցադրվում է "Չեղարկված է" Գծապատկերը․ diff --git a/1-js/02-first-steps/11-logical-operators/article.md b/1-js/02-first-steps/11-logical-operators/article.md index 7b28b0932..934e82c2a 100644 --- a/1-js/02-first-steps/11-logical-operators/article.md +++ b/1-js/02-first-steps/11-logical-operators/article.md @@ -1,6 +1,6 @@ # Տրամաբանական օպերատորներ (Logical operators) -JavaScript-ում կան չորս տրամաբանական օպերատորներ՝ `||` (ԿԱՄ), `&&` (ԵՎ), `!` (ՈՉ), `??` (Null-ի հետ համակցման). Այստեղ մենք կծանոթանանք առաջին երեքին։ `??` օպերատորին կարող եք ծանոթանալ հաջորդ հոդվածում։ +JavaScript-ում կան չորս տրամաբանական օպերատորներ՝ `||` (ԿԱՄ), `&&` (ԵՎ), `!` (ՈՉ), `??` (Nullish Coalescing). Այստեղ մենք կծանոթանանք առաջին երեքին։ `??` օպերատորին կարող եք ծանոթանալ հաջորդ հոդվածում։ Չնայած նրանք անվանվում են "տրամաբանական", նրանք կարող են կիրառվել կամայական(տարբերվող տրամաբանական տիպից) տիպի վրա։ Նրանց արդյունքը նույպես կարող է լինել կամայական տիպի։ @@ -14,33 +14,32 @@ JavaScript-ում կան չորս տրամաբանական օպերատորնե result = a || b ``` -Դասական ծրագրավորման մեջ տրամաբանական ԿԱՄ օպերատորը կիրառվում է միայն տրամաբանական արժեքների վրա։ Եթե նրա արգումենտներից մեկը ճշմարի `true` է, ապա այն վերադարձնում է `true`, հակառակ դեպքում՝ `false`։ +Դասական ծրագրավորման մեջ տրամաբանական ԿԱՄ օպերատորը կիրառվում է միայն տրամաբանական արժեքների վրա։ Եթե նրա արգումենտներից մեկը ճշմարիտ `true` է, ապա այն վերադարձնում է `true`, հակառակ դեպքում՝ `false`։ JavaScript֊ում այս օպերատորը ավելի ճկուն և հզոր է։ Բայց սկզում եկեք տեսնենք, թե ինչ է կատարվում տրամաբանական տիպերի հետ։ Կան չորս տրամաբանական կոմբինայիաներ․ ```js run -alert(true || true) // true -alert(false || true) // true -alert(true || false) // true -alert(false || false) // false +alert( true || true ); // true +alert( false || true ); // true +alert( true || false ); // true +alert( false || false ); // false ``` -Ինչպես տեսնում ենք արդյունքը միշտ ճիշտ(`true`) է, բացի այն դեպքից, երբ երկու օպերանդներն էլ սխալ(`false`) են։ +Ինչպես տեսնում ենք արդյունքը միշտ ճիշտ (`true`) է, բացի այն դեպքից, երբ երկու օպերանդներն էլ սխալ (`false`) են։ -Եթե օպերանդը տրամաբանական տիպ չի, ապա այն փոխակերպվում(convert) է տրամաբանական տիպի։ +Եթե օպերանդը տրամաբանական տիպ չի, ապա այն փոխակերպվում (convert) է տրամաբանական տիպի։ Օրինակ `1`֊ը մշակվում է որպես `true`, `0`֊ն՝ `false`․ ```js run -if (1 || 0) { - // աշխատում է ինչպես if( true || false ) +if (1 || 0) { // աշխատում է ինչպես if( true || false ) alert('Ճշմարիտ է!') } ``` -Շատ հաճախ ԿԱՄ `||` օպերատորը օգտագործվում է `if` պայմանի օպերատորի հետ՝ ստուգելու համար արդյոք ճիշտ(`true`) է տրված պայմաններից _գոնե մեկը_։ +Շատ հաճախ ԿԱՄ `||` օպերատորը օգտագործվում է `if` պայմանի օպերատորի հետ՝ ստուգելու համար արդյոք ճիշտ (`true`) է տրված պայմաններից _գոնե մեկը_։ Օրինակ․ @@ -83,7 +82,7 @@ result = value1 || value2 || value3 - Ամեն օպերանդի արժեք փոխակերպում է տրամաբանական տիպի։ Եթե արդյունքը `true` է այն կանգ է առնում և վերադարձնում այդ օպերանդի օրիգինալ արժեքը։ - Եթե բոլոր օպերանդները հաշվվում են, և բոլորի արժեքը `false` է լինում, ապա վերադարձնում է վերջին օպերանդի արժեքը։ -Արժեքը վերադարձվում է իր օրիգինալ վիճակում, առանց փոխարկման(conversion)։ +Արժեքը վերադարձվում է իր օրիգինալ վիճակում, առանց փոխարկման (conversion)։ Այլ կերպ ասած, ԿԱՄ `||`֊երից կազմված շղթան վերադարձնում է առաջին ճշմարիտ արժեքը, կամ վերջինը, եթե չկան ճշմարիտ արժեքներ։ @@ -95,47 +94,47 @@ alert(1 || 0) // 1 (1֊ը ճշմարիտ է) alert(null || 1) // 1 (1֊ը առաջին ճշմարիտ արժեքն է) alert(null || 0 || 1) // 1 (առաջին ճշմարիտ արժեքը) -alert(undefined || null || 0) // 0 (քանի որ բոլորը սխալական(falsy) են, վերադարձնում է վերջինը) +alert(undefined || null || 0) // 0 (քանի որ բոլորը սխալական (falsy) են, վերադարձնում է վերջինը) ``` Սա հնարավորություն է տալիս կիրառել օպերատորը "մաքուր, ստանդարտ, միայն տրամաբանական ԿԱՄ"֊ի շրջանակներից դուրս։ 1. **Առաջին ճշմարիտ արժեքի ստացումը փոփոխականների կամ արտահայտությունների ցուցակից։** - Օրինակի, ունենք `firstName`, `lastName` և `nickName` փոփոխականները, բոլորը ըստ ցանկության կարող են ստանալ սխալական կամ `undefined` արժեքներ։ + Օրինակ ունենք `firstName`, `lastName` և `nickName` փոփոխականները, բոլորը ըստ ցանկության կարող են ստանալ սխալական կամ `undefined` արժեքներ։ - Եկեք օգտագործենք ԿԱՄ `||`֊ը ընտրելու համար մեկը որը ունի արժեք(ճշմարիտ) և ցույց տանք այն (կամ `"Anonymous"` եթե այդպիսի արժեք չի գտնվել)։ + Եկեք օգտագործենք ԿԱՄ `||`֊ը ընտրելու համար մեկը որը ունի արժեք (ճշմարիտ) և ցույց տանք այն (կամ `"Anonymous"` եթե այդպիսի արժեք չի գտնվել)։ - ```js run - let firstName = ""; - let lastName = ""; - let nickName = "SuperCoder"; + ```js run + let firstName = ""; + let lastName = ""; + let nickName = "SuperCoder"; - *!* - alert( firstName || lastName || nickName || "Anonymous"); // SuperCoder - */!* - ``` + *!* + alert( firstName || lastName || nickName || "Anonymous"); // SuperCoder + */!* + ``` - Եթե բոլոր փոփոխականները լինեին սխալական, ապա կտեսնեինք `"Anonymous"`։ + Եթե բոլոր փոփոխականները լինեին սխալական, ապա կտեսնեինք `"Anonymous"`։ 2. **Կրճատ հաշվարկ (Short-circuit evaluation)։** - ԿԱՄ `||`֊ի մեկ այլ հատկությունը այսպես կոչված "կրճատ հաշվարկ"֊ի հատկությունն է։ + ԿԱՄ `||`֊ի մեկ այլ հատկությունը այսպես կոչված "կրճատ հաշվարկ"֊ի հատկությունն է։ - Դա նշանակում է, որ `||`֊ը կատարում է իր արգումենտների հաշվարկը և փոխակերպումը տրամաբանական տիպի մինչև առաջին ճշմարիտ արժեքին հանդիպելը, ապա այդ արժեքը միանգամից վերադարձվում է, առանց նույնիսկ հաջորդ արգումենտներին նայելու։ + Դա նշանակում է, որ `||`֊ը կատարում է իր արգումենտների հաշվարկը և փոխակերպումը տրամաբանական տիպի մինչև առաջին ճշմարիտ արժեքին հանդիպելը, ապա այդ արժեքը միանգամից վերադարձվում է, առանց նույնիսկ հաջորդ արգումենտներին նայելու։ - Այս հատկության կարևորությունն ակնհայտ է դառնում, եթե օպերանդը պարզապես արժեք չէ, այլ ինչ֊որ արտահայտություն՝ կողմնակի ազդեցությամբ, օրինակ փոփոխականի վերագրում կամ ֆունկցիայի կանչ։ + Այս հատկության կարևորությունն ակնհայտ է դառնում, եթե օպերանդը պարզապես արժեք չէ, այլ ինչ֊որ արտահայտություն՝ կողմնակի ազդեցությամբ, օրինակ փոփոխականի վերագրում կամ ֆունկցիայի կանչ։ - Ներքևի օրինակում միայն երկրորդ նամակը կերևա էկրանին․ + Ներքևի օրինակում միայն երկրորդ նամակը կերևա էկրանին․ - ```js run no-beautify - *!*true*/!* || alert("չի երևա"); - *!*false*/!* || alert("կերևա"); - ``` + ```js run no-beautify + *!*true*/!* || alert("չի երևա"); + *!*false*/!* || alert("կերևա"); + ``` - Առաջին տողում ԿԱՄ `||` օպերատորը անմիջապես դադարեցնում է հաշվարկը հենց հանդիպում է `true` արժեքին, այդ պատճառով `alert`֊ը չի կանչվում։ + Առաջին տողում ԿԱՄ `||` օպերատորը անմիջապես դադարեցնում է հաշվարկը հենց հանդիպում է `true` արժեքին, այդ պատճառով `alert`֊ը չի կանչվում։ - Հաճախ ծրագրավորողները օգտագործում են այս հատկությունը այն դեպքում, երբ անհրաժեշտ է կատարել հրամանները(execute commands) այն և միայն այն դեպքում, երբ ձախ կողմի գրված պայմանը սխալական է։ + Հաճախ ծրագրավորողները օգտագործում են այս հատկությունը այն դեպքում, երբ անհրաժեշտ է կատարել հրամանները (execute commands) այն և միայն այն դեպքում, երբ ձախ կողմի գրված պայմանը սխալական է։ ## && (ԵՎ) (AND) @@ -148,10 +147,10 @@ result = a && b Դասական ծրագրավորման մեջ ԵՎ օպերատորը վերադարձնում է `true`, եթե իր երկու օպերանդների արժեքները ճշմերիտ են, հակառակ դեպքում՝ `false`։ ```js run -alert(true && true) // true -alert(false && true) // false -alert(true && false) // false -alert(false && false) // false +alert( true && true ); // true +alert( false && true ); // false +alert( true && false ); // false +alert( false && false ); // false ``` Օրինակ `if`֊ի հետ։ @@ -168,8 +167,7 @@ if (hour == 12 && minute == 30) { Ինչպես ԿԱՄ֊ի դեպքում, ԵՎ֊ի օպերանդները նույնպես կարող են ունենալ կամայական արժեք․ ```js run -if (1 && 0) { - // հաշվվում է ինչպես true && false +if (1 && 0) { // հաշվվում է ինչպես true && false alert('չի երևա, որովհետև արժեքը սխալական է') } ``` @@ -188,7 +186,7 @@ result = value1 && value2 && value3 - Ամեն օպերանդի արժեք փոխակերպում է տրամաբանական տիպի։ Եթե արդյունքը `false` է այն կանգ է առնում և վերադարձնում այդ օպերանդի օրիգինալ արժեքը։ - Եթե բոլոր օպերանդները հաշվվում են, և բոլորի արժեքը `true` է լինում, ապա վերադարձնում է վերջին օպերանդի արժեքը։ -In other words, AND returns the first falsy value or the last value if none were found. +Այլ կերպ ասած, ԵՎ֊ը վերադարձնում է առաջին սխալական արժեքը, կամ վերջին արժեքը, եթե ոչ մի սխալական արժեք չի գտնվել։ Վերոնշյալ կանոնները նման են ԿԱՄ֊ին։ Տարբերությունն այն է, որ ԵՎ֊ը վերադարձնում է առաջին _սխալական_ արժեքը, իսկ ԿԱՄ֊ը՝ առաջին _ճշմարիտ_ արժեքը։ @@ -201,8 +199,7 @@ alert(1 && 0) // 0 alert(1 && 5) // 5 // Եթե առաջին օպերանդը սխալական է, -// ապա ԵՎ֊ը վերադարձնում է այն։ -// Երկրորդ օպերանդը անտեսվում է։ +// ապա ԵՎ֊ը վերադարձնում է այն։ Երկրորդ օպերանդը անտեսվում է։ alert(null && 5) // null alert(0 && 'կապ չունի ինչ') // 0 ``` @@ -219,11 +216,11 @@ alert(1 && 2 && null && 3) // null alert(1 && 2 && 3) // 3, վերջինը ``` -````smart header="ԵՎ `&&`֊ի նախապատվությունը(precedence) ավելի բարձր է քան ԿԱՄ `||`֊ինը" +````smart header="ԵՎ `&&`֊ի նախապատվությունը (precedence) ավելի բարձր է քան ԿԱՄ `||`֊ինը" Այսպիսով `a && b || c && d` արտահայտությունը համարժեք է հետևյալ արտահայտությանը՝ `(a && b) || (c && d)`, որտեղ `&&`֊երը փակագծերի մեջ են։ -````` +```` ````warn header="Մի փոխարինեք `if`֊ը `||`֊ով կամ `&&`֊ով" Հաճախ ծրագրավորողները օգտագործում են ԵՎ `&&` օպերատորը, որպես "`if`֊ի կարճ գրելաձև"։ @@ -236,7 +233,7 @@ let x = 1; (x > 0) && alert('Մեծ է զրոից'); ``` -Աջ կողմի գործողությունը կկատարվի այն ժամանակ, երբ ձախից աջ արժեքավրումը հասնի իրեն(այսինքն ձախ կողմի բոլոր արժեքները ճշմարիտ են)։ Դա տեղի կունենա, եթե `(x > 0)` արտահայտությունը ճիշտ լինի։ +Աջ կողմի գործողությունը կկատարվի այն ժամանակ, երբ ձախից աջ արժեքավորումը հասնի իրեն (այսինքն ձախ կողմի բոլոր արժեքները ճշմարիտ են)։ Դա տեղի կունենա, եթե `(x > 0)` արտահայտությունը ճիշտ լինի։ Դա ստացվում է հետևյալի անալոգը․ @@ -247,19 +244,19 @@ if (x > 0) alert('Մեծ է զրոից'); ``` Թեև `&&`֊ով տարբերակն ավելի կարճ է, `if`֊ը ավելի հասկանալի է և ավելի ընթեռնելի։ Այսպիսով, մենք խորհուրդ ենք տալիս օգտագործել յուրաքանչյուր գրելաձև իր նշանակությանը համապատասխան՝ օգտագործեք `if` եթե ցանկանում եք պայման ստուգել, և `&&`, եթե ցանկանում եք կատարել ԵՎ տրամաբանական գործողությունը։ -````` +```` ## ! (ՈՉ) (NOT) Տրամաբանական ՈՉ օպերատորը ներկայացվում է բացականչական նշանի միջոցով՝ `!`։ -Նրա շարահյուսությունը(syntax) շատ պարզ է․ +Նրա շարահյուսությունը (syntax) շատ պարզ է․ ```js result = !value ``` -Օպերատորը ընդունում է մեկ արգումենտ է կատարում հետևյալ քայլերը․ +Օպերատորը ընդունում է մեկ արգումենտ և կատարում հետևյալ քայլերը․ 1. Փոխակերպում է օպերանդը տրամաբանական տիպի՝ `true/false`. 2. Վերադարձնում է հակադարձ արժեքը։ @@ -267,8 +264,8 @@ result = !value Օրինակ․ ```js run -alert(!true) // false -alert(!0) // true +alert( !true ); // false +alert( !0 ); // true ``` Երբեմն կրկնակի ՈՉ `!!`֊ը օգտագործվում է արժեքը տրամաբանական տիպի փոխակերպելու համար․ @@ -278,7 +275,7 @@ alert(!!'ոչ դատարկ տողային արժեք') // true alert(!!null) // false ``` -Այսինքն՝ առաջին ՈՉ֊ը փոխակերպում է արժեքը տրամաբանական տիպի, և վերադարձնում դրա հակադարձը, իսկ երկրորդ ՈՉ֊ը կրկին հակադարձում է այն։ Վերջնարդյունքում ունենում ենք տրամաբանական տիպի փոխակերպում(value-to-boolean conversion)։ +Այսինքն՝ առաջին ՈՉ֊ը փոխակերպում է արժեքը տրամաբանական տիպի, և վերադարձնում դրա հակադարձը, իսկ երկրորդ ՈՉ֊ը կրկին հակադարձում է այն։ Վերջնարդյունքում ունենում ենք տրամաբանական տիպի փոխակերպում (value-to-boolean conversion)։ Այս գործողության ավելի տեսանելի տարբերակը ներկառուցված `Boolean` ֆունկցիայի կիրառմամբ է․