Pure Function trong Javascript: Hiểu thế nào cho đúng?
Bài viết được sự cho phép của tác giả Tống Xuân Hoài Vấn đề Tôi năm nay đã 26 tuổi, maintain cũng dăm ba dự án rồi mà đôi lúc tôi cũng hay gặp những trường hợp mà một số bạn trong team hay làm thế này: function convertBirthdayToAges (person) { const year = new Date().getFullYear(); // 2021 return person.map(p => p.age = year - p.year); } ... const persons = [{name: 'Nguyễn Văn A', year: 2000}]; convertBirthdayToAges(persons); console.log(persons); // [{name: 'Nguyễn Văn A', year: 2000, age: 21}] Thoạt nhìn cách viết hàm như trên có vẻ bình thường nhưng bạn hãy để ý sau khi persons đi qua hàm convertBirthdayToAges thì nó đã bị gắn thêm một attribute age. Hay một ví dụ khác kiểu như là: let year = 2020; function afterManyYear(num) { return year + num; } afterManyYear(5) // 2025; .... year = 2025; afterManyYear(5) // 2030; Ở ví dụ trên, ban đầu khi gọi hàm afterManyYear(5) kết quả là 2025 nhưng sau đó, do year bị thay đổi thành 2025 thì afterManyYear(5) lúc này lại trả về 2030. Điều này có vẻ cũng bình thường nhưng hãy tưởng tượng trong giai đoạn bảo trì khi bạn không biết year bị thay đổ [...]
Đọc thêm