Ֆունկցիաների փոխանցումը պարամետրերով JavaScript-ում
Ֆունկցիաները, թվերի, տողերի և զանգվածների նման, կարող են փոխանցվել որպես պարամետրեր այլ ֆունկցիաների։
Եկեք մանրամասն դիտարկենք գործնական օրինակով։
Ենթադրենք ունենք test ֆունկցիա, որը ընդունում է
երկու պարամետր։
test(պարամետր1, պարամետր2);
Եկեք test ֆունկցիայի առաջին պարամետրին
փոխանցենք անանուն ֆունկցիա, որը վերադարձնում է
1, իսկ երկրորդ պարամետրին՝ անանուն
ֆունկցիա, որը վերադարձնում է 2։
test(
function() {return 1;},
function() {return 2;}
);
Վերևում բերված կոդը դեռ չի աշխատում, քանի որ մենք ինքնին ֆունկցիան չենք ստեղծել։ Եկեք ստեղծենք այն։
function test(func1, func2) {
}
Ֆունկցիան սահմանելիս մենք նշեցինք երկու պարամետր
- func1 և func2։ Այս պարամետրերը
ոչինչ չգիտեն այն մասին, թե ինչ է նրանց մեջ փոխանցվելու։
Օրինակ, կարող ենք փոխանցել թվեր։
test(1, 2); // կանչում ենք ֆունկցիան
function test(func1, func2) {
console.log(func1); // կարտածի 1
console.log(func2); // կարտածի 2
}
Կամ կարող ենք փոխանցել ֆունկցիաներ։
test(
function() {return 1;}, // առաջին պարամետրը
function() {return 2;} // երկրորդ պարամետրը
);
function test(func1, func2) {
console.log(func1); // կարտածի 'function() {return 1;}'
console.log(func2); // կարտածի 'function() {return 2;}'
}
Ինչպես տեսնում եք, այժմ կոնսոլ արտածվում է ֆունկցիաների սկզբնական կոդը։ Եկեք անենք այնպես, որ այն արտածի դրանց արդյունքները։ Դրա համար գրենք ֆունկցիաներին կլոր փակագծեր։
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // կարտածի 1
console.log( func2() ); // կարտածի 2
}
Եկեք կոնսոլ արտածենք առաջին և երկրորդ ֆունկցիայի արդյունքների գումարը։
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // կարտածի 3
}
Ստեղծեք test ֆունկցիա, որի պարամետրերով
ընդունում է 3 ֆունկցիա։ Փոխանցեք դրան
առաջին պարամետրով ֆունկցիա, որը վերադարձնում է
1, երկրորդով՝ ֆունկցիա, որը վերադարձնում է
2, երրորդով՝ ֆունկցիա, որը վերադարձնում է
3։ Արտածեք կոնսոլ ֆունկցիաների արդյունքների
գումարը։