1 00:00:00,981 --> 00:00:03,728 让我们回到我们的程序, 此程序利用函数功能 2 00:00:03,728 --> 00:00:05,575 描画了四个Winston(大黄娃娃头)。 3 00:00:05,575 --> 00:00:08,156 我已经改变了他 4 00:00:08,156 --> 00:00:10,587 在每一年龄阶段实际年龄的显示。 你很快会明白为什么。 5 00:00:11,377 --> 00:00:13,549 但首先我需要让你们知道关于 Winston 的某些事情。 6 00:00:13,549 --> 00:00:15,901 Winston 特别喜欢炸甜面圈, 7 00:00:15,901 --> 00:00:18,437 他一天吃三个。 8 00:00:18,437 --> 00:00:21,333 那就是他的脸又大又黄的原因。 9 00:00:21,703 --> 00:00:25,311 所以为了警告Winston有关 炸甜面圈对他有多么不好, 10 00:00:25,311 --> 00:00:31,093 我想修改一下这个程序 显示他在每个年龄段吃了 11 00:00:31,093 --> 00:00:32,675 多少个炸甜面圈。 12 00:00:32,675 --> 00:00:35,783 比如,当他两岁的时候, 13 00:00:35,873 --> 00:00:41,598 那意味着他吃了3x365x2, 14 00:00:41,598 --> 00:00:45,873 所以是一天三个,乘以365天, 再乘以2年, 15 00:00:45,873 --> 00:00:50,330 我们会在那个头下面显示那个结果。 哇,这么多! 16 00:00:50,330 --> 00:00:53,945 两千个炸甜面圈,对一个两岁的 孩子来说真的很多。 17 00:00:53,945 --> 00:01:02,452 现在他是十四岁,让我们看看, 应该是3乘以365 再乘以14, 18 00:01:04,032 --> 00:01:08,446 那就是15,000个。好了。 19 00:01:08,446 --> 00:01:12,620 我可以一直用这个算式, 但我开始注意到一个模式。 20 00:01:13,150 --> 00:01:16,718 我在重复我的计算。 21 00:01:16,718 --> 00:01:20,416 虽然我只是改变一个数字: 年数。 22 00:01:20,416 --> 00:01:22,872 无论何时当我看到这样的重复编码, 23 00:01:22,872 --> 00:01:28,348 我会想,“嗯,我能把这变成一项函数吗?“ 24 00:01:28,348 --> 00:01:31,835 是的,绝对可以。 那么现在让我们来试试看。 25 00:01:32,795 --> 00:01:34,416 我会在这儿定义我的函数 26 00:01:34,416 --> 00:01:40,377 或者把它叫做calTotalDonuts=function 27 00:01:40,917 --> 00:01:44,228 它需要一个参数,年龄的数目, 28 00:01:44,228 --> 00:01:46,022 因为那是我们每次 29 00:01:46,022 --> 00:01:48,566 做计算时唯一有变化的数字。 30 00:01:49,316 --> 00:01:52,878 我们将在这里面做计算, 31 00:01:52,878 --> 00:01:59,600 并将其存作一个变量, 所以是3乘以365 乘以numYears. 32 00:02:00,680 --> 00:02:03,099 可以啦,现在我们就有了这个函数功能。 33 00:02:03,099 --> 00:02:08,598 我会用calcTotalDonuts来替代这个表达式 34 00:02:08,598 --> 00:02:11,568 使用函数功能,并且输入“2” 35 00:02:12,738 --> 00:02:16,877 好了,我们并没有看见总数 36 00:02:17,227 --> 00:02:19,092 那么,怎么回事儿? 37 00:02:19,092 --> 00:02:22,616 哦,我们的函数功能在这儿计算了总数 38 00:02:23,096 --> 00:02:25,640 但没有告诉任何人那个总数。 39 00:02:26,050 --> 00:02:30,367 就像老师在课堂上叫你起来回答问题 40 00:02:30,367 --> 00:02:31,744 你的答案在你的脑子里, 41 00:02:31,744 --> 00:02:33,652 但你羞于把它说出来。 42 00:02:33,652 --> 00:02:36,998 你已经完成了工作,但你的老师 却不知道, 43 00:02:37,348 --> 00:02:39,679 如果我们想让函数把值告诉给 44 00:02:39,679 --> 00:02:45,170 调用它的人, 那这个函数必须明确地回返一个值。 45 00:02:45,710 --> 00:02:49,319 所以,为了函数能回返一个值, 我们必须写下“return” 46 00:02:49,599 --> 00:02:51,568 然后就有了它所要的回值。 47 00:02:51,568 --> 00:02:55,138 也许它是一个变量或者 是一个值或一个表达式, 48 00:02:55,138 --> 00:02:57,749 那么在这儿我们就敲上 return totalDonuts,行吗? 49 00:02:57,749 --> 00:03:01,540 这样调用这个函数就能得到回应了 50 00:03:01,880 --> 00:03:04,421 现在我们的值显示在此,好棒! 51 00:03:04,771 --> 00:03:06,651 事实上我们能够缩短我们的函数, 52 00:03:06,651 --> 00:03:08,341 我们甚至不用把它存进变量, 53 00:03:08,341 --> 00:03:10,051 我们仅仅把这儿的整个表达式 54 00:03:10,051 --> 00:03:14,268 放进回车,然后它就仅有一行。很好。 55 00:03:15,068 --> 00:03:17,166 好吧,现在我们可以履行 56 00:03:17,166 --> 00:03:20,444 在一生的各个年龄段 计算炸甜面圈的总量 57 00:03:20,444 --> 00:03:23,452 只需点击这个函数功能 并且输入年数。 58 00:03:24,212 --> 00:03:28,704 让我们来看看,这是 calcTotalDonuts(25), 59 00:03:28,704 --> 00:03:34,056 没有打错地方,it's calcTotalDonuts(65) 60 00:03:36,366 --> 00:03:40,241 好了!很棒,如果他到了65岁, 61 00:03:40,241 --> 00:03:44,406 它就吃了70,000个炸甜面圈。 这太多了。 62 00:03:45,136 --> 00:03:48,051 我觉得Winston不会活那么长。(笑声) 63 00:03:48,051 --> 00:03:50,331 但现在我们已经把它做成了函数功能, 64 00:03:50,331 --> 00:03:52,891 要改变一下它的某些部分也很容易。 65 00:03:53,181 --> 00:03:55,138 比如Winston明白这个并且说, 66 00:03:55,138 --> 00:03:58,865 “哇,哇,这太多了。如果我每天 只吃一个怎么样?” 67 00:03:58,865 --> 00:04:02,242 行, 我们可以从这儿开始, 改变这一个数字, 68 00:04:02,732 --> 00:04:04,329 然后看看所有的变化。 69 00:04:04,329 --> 00:04:07,971 这是23,000.还是很多。 那么Winston又说, 70 00:04:07,971 --> 00:04:10,773 “好吧,好吧,如果我每周吃一个怎么样?” 71 00:04:10,773 --> 00:04:12,477 好的,这样比较合理。 72 00:04:12,477 --> 00:04:15,025 那么我们只需要把365 变为50, 73 00:04:15,025 --> 00:04:17,153 因为好像是一年50个星期,是吗? 74 00:04:18,103 --> 00:04:22,802 好,这就好多了,是吗? 3000个炸甜面圈,这看起来还比较合理。 75 00:04:22,802 --> 00:04:26,751 所以,你看利用函数和回返值, 76 00:04:26,751 --> 00:04:30,631 我们能够缩短编码而且挽救生命。