WEBVTT 00:00:00.981 --> 00:00:03.728 Ta trở lại với chương trình của mình sử dụng một hàm 00:00:03.728 --> 00:00:05.575 để vẽ Winston tới 4 lần. 00:00:05.575 --> 00:00:08.156 Và tôi đã thay đổi để nó thực sự thể hiện anh ta bao nhiêu tuổi 00:00:08.156 --> 00:00:10.587 tại mỗi thời điểm trong đời, và bạn sẽ sớm biết tại sao. 00:00:11.377 --> 00:00:13.549 Nhưng trước tiên tôi cần nói với bạn vài điều về Winston: 00:00:13.549 --> 00:00:15.901 Winston nghiện bánh rán. 00:00:15.901 --> 00:00:18.437 Anh ấy ăn 3 cái một ngày. 00:00:18.437 --> 00:00:21.333 Có lẽ đó là lý do tại sao khuôn mặt của anh ta to tròn và vàng như thế. 00:00:21.703 --> 00:00:25.311 Vì vậy, để cảnh báo Winston về việc bánh rán có hại như thế nào, 00:00:25.311 --> 00:00:28.263 Tôi muốn sửa đổi chương trình này để hiển thị 00:00:28.263 --> 00:00:31.755 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. 00:00:32.095 --> 00:00:35.783 Ví dụ, khi anh ấy hai tuổi, 00:00:35.873 --> 00:00:41.598 nghĩa là anh ta đã ăn 3 * 365 * 2, 00:00:41.598 --> 00:00:45.873 cứ như vậy ba cái một ngày, * 365 ngày, * 2 năm. 00:00:45.873 --> 00:00:50.330 Và ta sẽ chỉ hiển thị bên dưới phần tiêu đề, thật tuyệt vời! 00:00:50.330 --> 00:00:53.945 2000 chiếc bánh rán, quả là rất nhiều đối với một đứa trẻ 2 tuổi. 00:00:53.945 --> 00:01:02.452 Bây giờ khi anh ấy 14 tuổi, hãy xem, anh ấy đã 3 * 365 * 14 00:01:04.032 --> 00:01:08.446 Và đó là 15.000 chiếc bánh rán. Được rồi. 00:01:08.446 --> 00:01:12.620 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. 00:01:13.150 --> 00:01:16.718 Tôi đang lặp lại tính toán ở đây, 00:01:16.718 --> 00:01:20.416 và chỉ thay đổi một điều về nó: số năm. 00:01:20.416 --> 00:01:22.872 Bất cứ khi nào thấy mã lặp đi lặp lại như thế này, 00:01:22.872 --> 00:01:28.348 Tôi luôn tự nghĩ, "Hmm, ta có thể biến nó thành một hàm hay không?" 00:01:28.348 --> 00:01:31.835 Đúng vậy, chắc chắn rồi, ta có thể. Vì vậy, hãy làm ngay bây giờ. 00:01:32.795 --> 00:01:34.416 Tôi sẽ định nghĩa hàm của mình ở đây 00:01:34.416 --> 00:01:40.377 và gọi nó là calcTotalDonuts = function 00:01:40.917 --> 00:01:44.228 Và nó sẽ lấy một tham số, số năm, 00:01:44.228 --> 00:01:46.022 bởi vì đó là thứ duy nhất thay đổi 00:01:46.022 --> 00:01:48.566 mỗi lần thực hiện tính toán. 00:01:49.316 --> 00:01:52.878 Và sau đó bên trong, ta sẽ thực hiện tính toán, 00:01:52.878 --> 00:01:59.600 và lưu nó vào một biến, như vậy nó sẽ là 3 * 365 * số năm. 00:02:00.680 --> 00:02:03.099 Được rồi, vậy giờ ta có hàm đó, 00:02:03.099 --> 00:02:08.598 Tôi sẽ thay thế biểu thức này ở đây bằng calcTotalDonuts, 00:02:08.598 --> 00:02:11.568 gọi đến hàm và truyền vào "2". 00:02:12.738 --> 00:02:16.877 Được rồi, ừm, giờ ta không thấy tổng số nào cả. 00:02:17.227 --> 00:02:19.092 Hmm, được rồi, chuyện quái gì xảy ra thế? 00:02:19.092 --> 00:02:22.616 Vâng, hàm của ta đã tính tổng, ở đây, 00:02:23.096 --> 00:02:25.640 nhưng nó không nói cho ai biết về tổng số đó. 00:02:26.050 --> 00:02:30.367 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 00:02:30.367 --> 00:02:31.744 và bạn trả lời nó trong đầu 00:02:31.744 --> 00:02:33.652 bạn ngại nói ra câu trả lời. 00:02:33.652 --> 00:02:36.998 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ó. 00:02:37.348 --> 00:02:39.679 Nếu ta muốn hàm này truyền một giá trị 00:02:39.679 --> 00:02:45.170 cho thứ gì gọi nó, hàm phải trả về giá trị một cách rõ ràng. 00:02:45.710 --> 00:02:49.319 Vì vậy, để một hàm trả về một giá trị, ta cần gõ return, 00:02:49.599 --> 00:02:51.568 và sau đó là giá tị hàm muốn trả về. 00:02:51.568 --> 00:02:55.138 Có thể đó là một biến hoặc một giá trị hoặc một biểu thức, 00:02:55.138 --> 00:02:57.749 Vì vậy, ở đây ta sẽ gõ return TotalDonuts, được chưa nhỉ? 00:02:57.749 --> 00:03:01.540 Vì vậy, bất cứ thứ gì hàm đó cũng sẽ nhận được phản hồi này. 00:03:01.880 --> 00:03:04.421 Và bây giờ giá trị của ta đã hiển thị, yay! 00:03:04.771 --> 00:03:06.651 Và thực sự ta có thể rút gọn hàm, 00:03:06.651 --> 00:03:08.341 thậm chí không phải lưu trữ nó trong một biến, 00:03:08.341 --> 00:03:10.051 ta chỉ cần lấy toàn bộ biểu thức này ở đây 00:03:10.051 --> 00:03:14.268 đặt sau return, và sau đó nó chỉ là 1 dòng. Tốt rồi. 00:03:15.068 --> 00:03:17.166 Như vậy bây giờ ta có thể tiếp tục 00:03:17.166 --> 00:03:20.444 và tính tổng số bánh rán tại mỗi điểm trong đời 00:03:20.444 --> 00:03:23.452 bằng cách chỉ gọi hàm này và truyền vào số năm. 00:03:24.212 --> 00:03:28.704 Ừm, hãy xem, calcTotalDonuts(25), 00:03:28.704 --> 00:03:34.056 vị trí là chính xác, calcTotalDonuts(65) 00:03:36.366 --> 00:03:40.241 OK! Wow, như vậy nếu anh ta 65 tuổi, 00:03:40.241 --> 00:03:44.406 anh ta sẽ ăn 70.000 chiếc bánh rán. Con số đó là rất nhiều. 00:03:45.136 --> 00:03:48.051 Tôi không nghĩ Winston sẽ làm được đâu. (cười) 00:03:48.051 --> 00:03:50.331 Nhưng bây giờ ta đã biến nó thành một hàm, 00:03:50.331 --> 00:03:52.891 thật dễ dàng để thay đổi các phần của nó. 00:03:53.181 --> 00:03:55.138 Giống như nếu Winston nhìn thấy điều này và nói, 00:03:55.138 --> 00:03:58.865 "Whoa, whoa, nhiều quá. Nếu tôi chỉ ăn 1 cái mỗi ngày thì sao?" 00:03:58.865 --> 00:04:02.242 Được rồi, ta có thể vào đây, thay đổi một số này, 00:04:02.732 --> 00:04:04.329 và mọi thứ thay đổi. 00:04:04.329 --> 00:04:07.971 Vậy là 23.000. Vẫn còn rất nhiều. Vì vậy, có thể Winston thích, 00:04:07.971 --> 00:04:10.773 "Được rồi, được rồi, nếu tôi chỉ ăn 1 cái 1 tuần thì sao?" 00:04:10.773 --> 00:04:12.477 Ừ, hợp lý đấy, được thôi. 00:04:12.477 --> 00:04:15.025 Như vậy, sau đó ta có thể đổi 365 thành 50, 00:04:15.025 --> 00:04:17.153 bởi vì có 50 tuần trong một năm, phải không? 00:04:18.103 --> 00:04:22.802 Được rồi, tốt hơn nhiều, phải không? 3.000 bánh rán, có vẻ hợp lý. 00:04:22.802 --> 00:04:26.751 Được rồi, bạn thấy đấy, với các hàm và giá trị trả về, 00:04:26.751 --> 00:00:00.000 ta có thể lưu code và cứu mạng (Winston) nữa.