1 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 2 00:00:03,728 --> 00:00:05,575 để vẽ Winston tới 4 lần. 3 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 4 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. 5 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: 6 00:00:13,549 --> 00:00:15,901 Winston nghiện bánh rán. 7 00:00:15,901 --> 00:00:18,437 Anh ấy ăn 3 cái một ngày. 8 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ế. 9 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, 10 00:00:25,311 --> 00:00:28,263 Tôi muốn sửa đổi chương trình này để hiển thị 11 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. 12 00:00:32,095 --> 00:00:35,783 Ví dụ, khi anh ấy hai tuổi, 13 00:00:35,873 --> 00:00:41,598 nghĩa là anh ta đã ăn 3 * 365 * 2, 14 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. 15 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! 16 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. 17 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 18 00:01:04,032 --> 00:01:08,446 Và đó là 15.000 chiếc bánh rán. Được rồi. 19 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. 20 00:01:13,150 --> 00:01:16,718 Tôi đang lặp lại tính toán ở đây, 21 00:01:16,718 --> 00:01:20,416 và chỉ thay đổi một điều về nó: số năm. 22 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, 23 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?" 24 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ờ. 25 00:01:32,795 --> 00:01:34,416 Tôi sẽ định nghĩa hàm của mình ở đây 26 00:01:34,416 --> 00:01:40,377 và gọi nó là calcTotalDonuts = function 27 00:01:40,917 --> 00:01:44,228 Và nó sẽ lấy một tham số, số năm, 28 00:01:44,228 --> 00:01:46,022 bởi vì đó là thứ duy nhất thay đổi 29 00:01:46,022 --> 00:01:48,566 mỗi lần thực hiện tính toán. 30 00:01:49,316 --> 00:01:52,878 Và sau đó bên trong, ta sẽ thực hiện tính toán, 31 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. 32 00:02:00,680 --> 00:02:03,099 Được rồi, vậy giờ ta có hàm đó, 33 00:02:03,099 --> 00:02:08,598 Tôi sẽ thay thế biểu thức này ở đây bằng calcTotalDonuts, 34 00:02:08,598 --> 00:02:11,568 gọi đến hàm và truyền vào "2". 35 00:02:12,738 --> 00:02:16,877 Được rồi, ừm, giờ ta không thấy tổng số nào cả. 36 00:02:17,227 --> 00:02:19,092 Hmm, được rồi, chuyện quái gì xảy ra thế? 37 00:02:19,092 --> 00:02:22,616 Vâng, hàm của ta đã tính tổng, ở đây, 38 00:02:23,096 --> 00:02:25,640 nhưng nó không nói cho ai biết về tổng số đó. 39 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 40 00:02:30,367 --> 00:02:31,744 và bạn trả lời nó trong đầu 41 00:02:31,744 --> 00:02:33,652 bạn ngại nói ra câu trả lời. 42 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ó. 43 00:02:37,348 --> 00:02:39,679 Nếu ta muốn hàm này truyền một giá trị 44 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. 45 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, 46 00:02:49,599 --> 00:02:51,568 và sau đó là giá tị hàm muốn trả về. 47 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, 48 00:02:55,138 --> 00:02:57,749 Vì vậy, ở đây ta sẽ gõ return TotalDonuts, được chưa nhỉ? 49 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. 50 00:03:01,880 --> 00:03:04,421 Và bây giờ giá trị của ta đã hiển thị, yay! 51 00:03:04,771 --> 00:03:06,651 Và thực sự ta có thể rút gọn hàm, 52 00:03:06,651 --> 00:03:08,341 thậm chí không phải lưu trữ nó trong một biến, 53 00:03:08,341 --> 00:03:10,051 ta chỉ cần lấy toàn bộ biểu thức này ở đây 54 00:03:10,051 --> 00:03:14,268 đặt sau return, và sau đó nó chỉ là 1 dòng. Tốt rồi. 55 00:03:15,068 --> 00:03:17,166 Như vậy bây giờ ta có thể tiếp tục 56 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 57 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. 58 00:03:24,212 --> 00:03:28,704 Ừm, hãy xem, calcTotalDonuts(25), 59 00:03:28,704 --> 00:03:34,056 vị trí là chính xác, calcTotalDonuts(65) 60 00:03:36,366 --> 00:03:40,241 OK! Wow, như vậy nếu anh ta 65 tuổi, 61 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. 62 00:03:45,136 --> 00:03:48,051 Tôi không nghĩ Winston sẽ làm được đâu. (cười) 63 00:03:48,051 --> 00:03:50,331 Nhưng bây giờ ta đã biến nó thành một hàm, 64 00:03:50,331 --> 00:03:52,891 thật dễ dàng để thay đổi các phần của nó. 65 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, 66 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?" 67 00:03:58,865 --> 00:04:02,242 Được rồi, ta có thể vào đây, thay đổi một số này, 68 00:04:02,732 --> 00:04:04,329 và mọi thứ thay đổi. 69 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, 70 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?" 71 00:04:10,773 --> 00:04:12,477 Ừ, hợp lý đấy, được thôi. 72 00:04:12,477 --> 00:04:15,025 Như vậy, sau đó ta có thể đổi 365 thành 50, 73 00:04:15,025 --> 00:04:17,153 bởi vì có 50 tuần trong một năm, phải không? 74 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ý. 75 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ề, 76 00:04:26,751 --> 00:00:00,000 ta có thể lưu code và cứu mạng (Winston) nữa.