-
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.