Skip to content

Latest commit

 

History

History
48 lines (35 loc) · 4.61 KB

How the Comma Operator Works.hy.md

File metadata and controls

48 lines (35 loc) · 4.61 KB

Ստորակետ (comma) օպերատորը JavaScript-ում: Ստորակետը որպես տարանջատիչ և որպես օպերատոր:

Մենք հաճախ ենք հանդիպում ստորակետի (,) կիրառությանը որպես տարանջատիչ։ Զանգվածի մեջ այն իրարից առանձնացնում է զանգվածի էլեմենտները, օբյեկտներում՝ հատկությունները, մեթոդների մեջ կարող է իրարից առանձնացնել արգումենտները։ Օրինակ՝

const arr = [1, 2, 3, 4];
const car = { color: "red", speed: 250 };
Math.max(4, 2, 5, 7, 3);

Սակայն գոյություն ունի նաև ստորակետ (comma) օպերատոր, որն այնքան էլ հաճախ չի կիրառվում և հանդիսանում է երևի թե ամենաանսովոր օպերատորը: Այն, թեև շատ սահմանափակ կիրառություն ունի, այնուամենայնիվ իմանալ և աշխատանքի սկզբունքը հասկանալ պետք է, որովհետև երբեմն օգտագործվում է ավելի կարճ կոդ գրելու համար:

Ստորակետ օպերատորը մեզ թույլ է տալիս հաշվարկել մի քանի արտահայտություններ, դրանք իրարից տարանջատելով ստորակետի միջոցով։ Բոլոր արտահայտությունները կատարվում են, սակայն օպերատորը վերադարձնում է միայն վերջին արտահայտության արդյունքը։ Օրինակ՝

let a = (2 ** 3, 4 / 2, 1 + 2);
console.log(a); // 3

Առաջին արտահայտությունը՝ 2 ** 3 կատարվում է, սակայն արդյունքը՝ 8-ը դեն է նետվում։ Ապա կատարվում է երկրորդ արտահայտությունը՝ 4 / 2, և ստացված արդյունքը՝ 2-ը, նույնպես անտեսվում է։ Եվ վերջապես կատարվում է երրորդ արտահայտությունը՝ 1 + 2, և քանի-որ այն վերջինն է, ստացված արդյունքը՝ 3-ը, օպերատորը վերադարձնում է, և այն վերագրվում է a փոփոխականին։

Ստորակետ օպերատորն ունի շատ ցածր առաջնահերթություն (Operator precedence), այս հղումով եթե նայենք JavaScript-ի բոլոր օպերատորների առաջնահերթության սանդղակը, ապա կտեսնեք, որ ստորակետը վերջին տեղում է 1 առաջնահերթության ինդեքսով (ինչքան ինդեքսը բարձր է, այնքան բարձր է օպերատորի առաջնահերթությունը, օրինակ խմբավորման օպերատոր հանդիսացող փակագծերի առաջնահերթության ինդեքսը 21 է, որն ամենաբարձրն է սանդղակի մեջ):

Քանի-որ առաջնահերթության սանդղակում ստորակետն ամենացածր ինդեքսն ունի, ապա վերևում բերված օրինակի մեջ փակագծերի կիրառությունը պարտադիր է՝ օպերատորի օգտագործման կանխատեսելի արդյունքը ստանալու համար։

Ստորակետ օպերատորի օգտագործմամբ՝ մի տողի վրա մի քանի արտահայտությունների կատարման հնարքն այնքան էլ ողջունելի չէ, քանի-որ զգալիորեն վատթարացնում է կոդի ընթեռնելիությունը։ Սակայն որոշ դեպքերում այն կարող է օգտագործվել հակիրճ և էլեգանտ կոդ գրելու համար, որը նաև բավականին հասկանալի կլինի։ JavaScript-ի մի շարք գրադարաններ լայնորեն կիրառում են այդ հնարքները:

Կիրառության մեկ օրինակ՝ Stack Overflow-ից։

for (let a = 1, b = 10; a < b; a++, b--) {
  console.log(new Array(b - a).join("*"));
}

Կոնսոլում կնկարվի հետևյալ պատկերը՝

*********
*****************
***********************
***************************
*****************************
***************************
***********************
*****************
*********