JavaScript-ში განმეორებადი ოპერაციების ოპტიმიზაცია
ხშირად დამწყები პროგრამისტები გონებამიუწვდომლად ახდენენ ერთი და იგივე ფუნქციის გამოძახებას რამდენჯერმე, რაც ხარჯავს რესურსებს.
მოდით შევხედოთ მაგალითს. დავუშვათ გვაქვს მოცემული სტრიქონი, რომელიც შეიცავს გარკვეულ გზას:
javascriptlet path = 'img.png';
დავუშვათ, ჩვენ წინაშე დგას ამოცანა შევამოწმოთ,
მთავრდება თუ არა გზა გაფართოებით
.png ან .jpg. ზოგიერთმა
დამწყებმა პროგრამისტმა დაწერა
შემდეგი ამოხსნა:
javascriptlet path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
რა არის არასწორი ამ ამოხსნაში? პრობლემა ისაა,
რომ მეთოდი slice იწოდება ორჯერ,
აკეთებს ერთსა და იმავეს. ეს, რა თქმა უნდა,
არაა ოპტიმალური.
ოპტიმიზაციისთვის საჭიროა სტრიქონის ამოჭრა შესრულდეს ერთხელ, ჩაიწეროს შედეგი ცვლადში, შემდეგ კი გამოყენებულ იქნეს ეს ცვლადი შემდგომ:
javascriptlet path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
ოპტიმიზაცია გაუკეთეთ ქვემოთ მოცემულ კოდს:
javascriptlet num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
ოპტიმიზაცია გაუკეთეთ ქვემოთ მოცემულ კოდს:
javascriptlet date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('დასვენების დღე');
} else {
console.log('სამუშაო დღე');
}
ოპტიმიზაცია გაუკეთეთ ქვემოთ მოცემულ კოდს:
javascriptlet date = new Date();
let res;
if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
res = 'წელი ' + date.getFullYear() + ' შესაფერისია';
} else {
res = 'წელი ' + date.getFullYear() + ' არ არის შესაფერისი';
}
console.log(res)