Ta trở lại với chương trình của mình sử dụng một hàm
để vẽ Winston tới 4 lần.
Và tôi đã thay đổi để nó thực sự thể hiện anh ta bao nhiêu tuổi
tại mỗi thời điểm trong đời, và bạn sẽ sớm biết tại sao.
Nhưng trước tiên tôi cần nói với bạn vài điều về Winston:
Winston nghiện bánh rán.
Anh ấy ăn 3 cái một ngày.
Có lẽ đó là lý do tại sao khuôn mặt của anh ta to tròn và vàng như thế.
Vì vậy, để cảnh báo Winston về việc bánh rán có hại như thế nào,
Tôi muốn sửa đổi chương trình này để hiển thị
Anh ấy đã ăn tổng cộng bao nhiêu bánh rán tại mỗi thời điểm trong đời mình.
Ví dụ, khi anh ấy hai tuổi,
nghĩa là anh ta đã ăn 3 * 365 * 2,
cứ như vậy ba cái một ngày, * 365 ngày, * 2 năm.
Và ta sẽ chỉ hiển thị bên dưới phần tiêu đề, thật tuyệt vời!
2000 chiếc bánh rán, quả là rất nhiều đối với một đứa trẻ 2 tuổi.
Bây giờ khi anh ấy 14 tuổi, hãy xem, anh ấy đã 3 * 365 * 14
Và đó là 15.000 chiếc bánh rán. Được rồi.
Như vậy, tôi có thể tiếp tục làm toán, nhưng đã bắt đầu nhận thấy một mô hình.
Tôi đang lặp lại tính toán ở đây,
và chỉ thay đổi một điều về nó: số năm.
Bất cứ khi nào thấy mã lặp đi lặp lại như thế này,
Tôi luôn tự nghĩ, "Hmm, ta có thể biến nó thành một hàm hay không?"
Đúng vậy, chắc chắn rồi, ta có thể. Vì vậy, hãy làm ngay bây giờ.
Tôi sẽ định nghĩa hàm của mình ở đây
và gọi nó là calcTotalDonuts = function
Và nó sẽ lấy một tham số, số năm,
bởi vì đó là thứ duy nhất thay đổi
mỗi lần thực hiện tính toán.
Và sau đó bên trong, ta sẽ thực hiện tính toán,
và lưu nó vào một biến, như vậy nó sẽ là 3 * 365 * số năm.
Được rồi, vậy giờ ta có hàm đó,
Tôi sẽ thay thế biểu thức này ở đây bằng calcTotalDonuts,
gọi đến hàm và truyền vào "2".
Được rồi, ừm, giờ ta không thấy tổng số nào cả.
Hmm, được rồi, chuyện quái gì xảy ra thế?
Vâng, hàm của ta đã tính tổng, ở đây,
nhưng nó không nói cho ai biết về tổng số đó.
Giống như nếu một giáo viên gọi bạn trong lớp để trả lời một câu hỏi
và bạn trả lời nó trong đầu
bạn ngại nói ra câu trả lời.
Bạn đã hoàn thành công việc, nhưng giáo viên sẽ không bao giờ biết về nó.
Nếu ta muốn hàm này truyền một giá trị
cho thứ gì gọi nó, hàm phải trả về giá trị một cách rõ ràng.
Vì vậy, để một hàm trả về một giá trị, ta cần gõ return,
và sau đó là giá tị hàm muốn trả về.
Có thể đó là một biến hoặc một giá trị hoặc một biểu thức,
Vì vậy, ở đây ta sẽ gõ return TotalDonuts, được chưa nhỉ?
Vì vậy, bất cứ thứ gì hàm đó cũng sẽ nhận được phản hồi này.
Và bây giờ giá trị của ta đã hiển thị, yay!
Và thực sự ta có thể rút gọn hàm,
thậm chí không phải lưu trữ nó trong một biến,
ta chỉ cần lấy toàn bộ biểu thức này ở đây
đặt sau return, và sau đó nó chỉ là 1 dòng. Tốt rồi.
Như vậy bây giờ ta có thể tiếp tục
và tính tổng số bánh rán tại mỗi điểm trong đời
bằng cách chỉ gọi hàm này và truyền vào số năm.
Ừm, hãy xem, calcTotalDonuts(25),
vị trí là chính xác, calcTotalDonuts(65)
OK! Wow, như vậy nếu anh ta 65 tuổi,
anh ta sẽ ăn 70.000 chiếc bánh rán. Con số đó là rất nhiều.
Tôi không nghĩ Winston sẽ làm được đâu. (cười)
Nhưng bây giờ ta đã biến nó thành một hàm,
thật dễ dàng để thay đổi các phần của nó.
Giống như nếu Winston nhìn thấy điều này và nói,
"Whoa, whoa, nhiều quá. Nếu tôi chỉ ăn 1 cái mỗi ngày thì sao?"
Được rồi, ta có thể vào đây, thay đổi một số này,
và mọi thứ thay đổi.
Vậy là 23.000. Vẫn còn rất nhiều. Vì vậy, có thể Winston thích,
"Được rồi, được rồi, nếu tôi chỉ ăn 1 cái 1 tuần thì sao?"
Ừ, hợp lý đấy, được thôi.
Như vậy, sau đó ta có thể đổi 365 thành 50,
bởi vì có 50 tuần trong một năm, phải không?
Được rồi, tốt hơn nhiều, phải không? 3.000 bánh rán, có vẻ hợp lý.
Được rồi, bạn thấy đấy, với các hàm và giá trị trả về,
ta có thể lưu code và cứu mạng (Winston) nữa.