WEBVTT 00:00:00.981 --> 00:00:03.728 让我们回到我们的程序, 此程序利用函数功能 00:00:03.728 --> 00:00:05.575 描画了四个Winston(大黄娃娃头)。 00:00:05.575 --> 00:00:08.156 我已经改变了他 00:00:08.156 --> 00:00:10.587 在每一年龄阶段实际年龄的显示。 你很快会明白为什么。 00:00:11.377 --> 00:00:13.549 但首先我需要让你们知道关于 Winston 的某些事情。 00:00:13.549 --> 00:00:15.901 Winston 特别喜欢炸甜面圈, 00:00:15.901 --> 00:00:18.437 他一天吃三个。 00:00:18.437 --> 00:00:21.333 那就是他的脸又大又黄的原因。 00:00:21.703 --> 00:00:25.311 所以为了警告Winston有关 炸甜面圈对他有多么不好, 00:00:25.311 --> 00:00:31.093 我想修改一下这个程序 显示他在每个年龄段吃了 00:00:31.093 --> 00:00:32.675 多少个炸甜面圈。 00:00:32.675 --> 00:00:35.783 比如,当他两岁的时候, 00:00:35.873 --> 00:00:41.598 那意味着他吃了3x365x2, 00:00:41.598 --> 00:00:45.873 所以是一天三个,乘以365天, 再乘以2年, 00:00:45.873 --> 00:00:50.330 我们会在那个头下面显示那个结果。 哇,这么多! 00:00:50.330 --> 00:00:53.945 两千个炸甜面圈,对一个两岁的 孩子来说真的很多。 00:00:53.945 --> 00:01:02.452 现在他是十四岁,让我们看看, 应该是3乘以365 再乘以14, 00:01:04.032 --> 00:01:08.446 那就是15,000个。好了。 00:01:08.446 --> 00:01:12.620 我可以一直用这个算式, 但我开始注意到一个模式。 00:01:13.150 --> 00:01:16.718 我在重复我的计算。 00:01:16.718 --> 00:01:20.416 虽然我只是改变一个数字: 年数。 00:01:20.416 --> 00:01:22.872 无论何时当我看到这样的重复编码, 00:01:22.872 --> 00:01:28.348 我会想,“嗯,我能把这变成一项函数吗?“ 00:01:28.348 --> 00:01:31.835 是的,绝对可以。 那么现在让我们来试试看。 00:01:32.795 --> 00:01:34.416 我会在这儿定义我的函数 00:01:34.416 --> 00:01:40.377 或者把它叫做calTotalDonuts=function 00:01:40.917 --> 00:01:44.228 它需要一个参数,年龄的数目, 00:01:44.228 --> 00:01:46.022 因为那是我们每次 00:01:46.022 --> 00:01:48.566 做计算时唯一有变化的数字。 00:01:49.316 --> 00:01:52.878 我们将在这里面做计算, 00:01:52.878 --> 00:01:59.600 并将其存作一个变量, 所以是3乘以365 乘以numYears. 00:02:00.680 --> 00:02:03.099 可以啦,现在我们就有了这个函数功能。 00:02:03.099 --> 00:02:08.598 我会用calcTotalDonuts来替代这个表达式 00:02:08.598 --> 00:02:11.568 使用函数功能,并且输入“2” 00:02:12.738 --> 00:02:16.877 好了,我们并没有看见总数 00:02:17.227 --> 00:02:19.092 那么,怎么回事儿? 00:02:19.092 --> 00:02:22.616 哦,我们的函数功能在这儿计算了总数 00:02:23.096 --> 00:02:25.640 但没有告诉任何人那个总数。 00:02:26.050 --> 00:02:30.367 就像老师在课堂上叫你起来回答问题 00:02:30.367 --> 00:02:31.744 你的答案在你的脑子里, 00:02:31.744 --> 00:02:33.652 但你羞于把它说出来。 00:02:33.652 --> 00:02:36.998 你已经完成了工作,但你的老师 却不知道, 00:02:37.348 --> 00:02:39.679 如果我们想让函数把值告诉给 00:02:39.679 --> 00:02:45.170 调用它的人, 那这个函数必须明确地回返一个值。 00:02:45.710 --> 00:02:49.319 所以,为了函数能回返一个值, 我们必须写下“return” 00:02:49.599 --> 00:02:51.568 然后就有了它所要的回值。 00:02:51.568 --> 00:02:55.138 也许它是一个变量或者 是一个值或一个表达式, 00:02:55.138 --> 00:02:57.749 那么在这儿我们就敲上 return totalDonuts,行吗? 00:02:57.749 --> 00:03:01.540 这样调用这个函数就能得到回应了 00:03:01.880 --> 00:03:04.421 现在我们的值显示在此,好棒! 00:03:04.771 --> 00:03:06.651 事实上我们能够缩短我们的函数, 00:03:06.651 --> 00:03:08.341 我们甚至不用把它存进变量, 00:03:08.341 --> 00:03:10.051 我们仅仅把这儿的整个表达式 00:03:10.051 --> 00:03:14.268 放进回车,然后它就仅有一行。很好。 00:03:15.068 --> 00:03:17.166 好吧,现在我们可以履行 00:03:17.166 --> 00:03:20.444 在一生的各个年龄段 计算炸甜面圈的总量 00:03:20.444 --> 00:03:23.452 只需点击这个函数功能 并且输入年数。 00:03:24.212 --> 00:03:28.704 让我们来看看,这是 calcTotalDonuts(25), 00:03:28.704 --> 00:03:34.056 没有打错地方,it's calcTotalDonuts(65) 00:03:36.366 --> 00:03:40.241 好了!很棒,如果他到了65岁, 00:03:40.241 --> 00:03:44.406 它就吃了70,000个炸甜面圈。 这太多了。 00:03:45.136 --> 00:03:48.051 我觉得Winston不会活那么长。(笑声) 00:03:48.051 --> 00:03:50.331 但现在我们已经把它做成了函数功能, 00:03:50.331 --> 00:03:52.891 要改变一下它的某些部分也很容易。 00:03:53.181 --> 00:03:55.138 比如Winston明白这个并且说, 00:03:55.138 --> 00:03:58.865 “哇,哇,这太多了。如果我每天 只吃一个怎么样?” 00:03:58.865 --> 00:04:02.242 行, 我们可以从这儿开始, 改变这一个数字, 00:04:02.732 --> 00:04:04.329 然后看看所有的变化。 00:04:04.329 --> 00:04:07.971 这是23,000.还是很多。 那么Winston又说, 00:04:07.971 --> 00:04:10.773 “好吧,好吧,如果我每周吃一个怎么样?” 00:04:10.773 --> 00:04:12.477 好的,这样比较合理。 00:04:12.477 --> 00:04:15.025 那么我们只需要把365 变为50, 00:04:15.025 --> 00:04:17.153 因为好像是一年50个星期,是吗? 00:04:18.103 --> 00:04:22.802 好,这就好多了,是吗? 3000个炸甜面圈,这看起来还比较合理。 00:04:22.802 --> 00:04:26.751 所以,你看利用函数和回返值, 00:04:26.751 --> 00:04:30.631 我们能够缩短编码而且挽救生命。