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