Middle
Ar įmanoma, nekeičiant kodo tvarkos, bet pridėjus kažką funkcijos viduje, kad finally vėl išsijungtų (su skaičiumi 10)?
sobes.tech AI
Atsakymas iš AI
JavaScript'e, finally blokas visada įvykdomas vieną kartą po try ir catch. Norint, kad finally vėl įvykdytųsi su skaičiumi 10, nesikeičiant kodo tvarkos, galima jį rekursyviai iškviesti funkcijos viduje arba naudoti ciklą, tačiau tai pakeis logiką.
Tačiau, jei nėra galimybės keisti kodo tvarkos, bet leidžiama pridėti papildomą kodą funkcijos viduje, galima iškviesti pagalbinę funkciją finally, kuri įvykdys reikalingą kodą su skaičiumi 10. Pavyzdžiui:
function pavyzdys() {
try {
console.log('try blokas');
} catch(e) {
console.log('catch blokas');
} finally {
console.log('finally blokas');
runAgain(10);
}
}
function runAgain(skaicius) {
console.log('pakartotinai iškviestas su', skaicius);
}
pavyzdys();
Taip, finally blokas įvykdys tik vieną kartą, tačiau jame galima iškviesti papildomą kodą su reikalingu parametru. Jei reikalingas finally blokas kartotinai, be kodo tvarkos keitimo, tai nėra įmanoma.