Rest օպերատորը JavaScript-ում

Այս դասը կսկսենք որոշակի բացատրությամբ։ Բաժնի բոլոր նախորդ դասերում ես ձեզ չէի ասել ամբողջ ճշմարտությունը ... օպերատորի մասին։

Իրականում այս օպերատորը՝ կախված կոդում գտնվելու վայրից, կարող է կոչվել spread օպերատոր կամ rest օպերատոր։

Ինչպես արդեն գիտեք, երբ spread օպերատորը կանգնած է զանգվածի կամ տողի դիմաց, այն բաժանում է դրանք առանձին արժեքների։ Rest օպերատորը, չնայած ունի նույն շարահյուսությունը ... տեսքով, բայց նախատեսված է այլ նպատակով։

Հիմա կպարզենք, թե ինչի համար։ Ենթադրենք մենք ունենք ֆունկցիա, որն ընդունում է երկու պարամետր։

javascriptfunction func(a, b) {
  console.log(a);
  console.log(b);
}

Դուք արդեն պետք է իմանաք, որ եթե ֆունկցիային փոխանցվեն ավելորդ պարամետրեր, դա չի հանգեցնի սխալի։

javascriptfunc(1, 2, 3, 4, 5);

Rest օպերատորը թույլ է տալիս ստանալ բոլոր ավելորդ պարամետրերը զանգվածի տեսքով։ Դրա համար ֆունկցիային ավելացվում է ևս մեկ պարամետր (պարտադիր վերջինը), որից առաջ գրվում են 3 կետ։

javascriptfunction func(a, b, ...rest) {
  
}

Այս երեք կետերը հենց rest օպերատորն են, իսկ փոփոխականի անունը կարող է ունենալ ցանկացած անվանում, բայց sովորաբար ընդունված է նաև այն կոչել rest։

Եկեք կանչենք մեր ֆունկցիան ավելորդ քանակությամբ պարամետրերով և տեսնենք, թե ինչ է ընկնում a և b պարամետրերի, և ինչ՝ rest մնացորդի մեջ։

javascriptfunc(1, 2, 3, 4, 5);

function func(a, b, ...rest) {
  console.log(a);    // կարտածի 1
  console.log(b);    // կարտածի 2
  console.log(rest); // կարտածի [3, 4, 5]
}

Եթե ավելորդ պարամետրեր չլինեն, ապա փոփոխականի մեջ rest կգրվի դատարկ զանգված։

javascriptfunc(1, 2);

function func(a, b, ...rest) {
  console.log(a);    // կարտածի 1
  console.log(b);    // կարտածի 2
  console.log(rest); // կարտածի []
}

Ֆունկցիան ընդհանրապես կարող է չունենալ պարամետրեր, բայց միևնույն ժամանակ դրան կարելի է ավելացնել rest։ Այս դեպքում ֆունկցիան կարելի է կանչել ցանկացած քանակությամբ պարամետրերով, և դրանք բոլորը կընկնեն rest զանգվածի մեջ։

javascriptfunction func(...rest) {
  console.log(rest);
}