Tối ưu hóa các thao tác lặp lại trong JavaScript
Thường thì các lập trình viên mới bắt đầu một cách vô ý thức gọi cùng một hàm nhiều lần, làm lãng phí tài nguyên.
Hãy xem xét một ví dụ. Giả sử chúng ta có một chuỗi chứa một đường dẫn nào đó:
javascriptlet path = 'img.png';
Giả sử chúng ta có nhiệm vụ kiểm tra xem
đường dẫn có kết thúc bằng phần mở rộng
.png hoặc .jpg hay không. Một số
lập trình viên mới bắt đầu đã viết
lời giải như sau:
javascriptlet path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Điều gì không ổn với lời giải này? Vấn đề là,
phương thức slice được gọi hai lần,
thực hiện cùng một việc. Điều này, tất nhiên,
là không tối ưu.
Để tối ưu hóa, cần thực hiện việc cắt chuỗi một lần, ghi kết quả vào một biến, sau đó sử dụng biến này sau này:
javascriptlet path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Задание 1
Tối ưu hóa đoạn mã dưới đây:
javascriptlet num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Задание 2
Tối ưu hóa đoạn mã dưới đây:
javascriptlet date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Задание 3
Tối ưu hóa đoạn mã dưới đây:
javascriptlet date = new Date();
let res;
if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
res = 'year ' + date.getFullYear() + ' fits';
} else {
res = 'year ' + date.getFullYear() + ' doesn't fit';
}
console.log(res)