返回介绍

最后的例子

发布于 2024-08-18 11:54:29 字数 1580 浏览 0 评论 0 收藏 0

作为本章最后一个例子,我们要给出一个能演示目前为止我们所讨论过的多条原则的例子。

假设你有一个网页,上面有几个文本输入字段,布置如下:

如你所见,id从input1开始增加。

你的工作是写一个叫setFirstEmptyInput()的函数,它接受一个字符串并把它放在页面上第一个空的<input>字段中(在给出的示例中是"input3")。这个函数应当返回已更新的那个DOM元素(如果没有剩下任何空字段则返回null)。下面是完成这项工作的代码,它没有遵守本章中的原则:

这段代码可以完成工作,但看上去并不完美。什么地方不对?如何改进?

有很多途径可以用来思考对这段代码的改进,但我们会从它所使用的变量这个角度开始考虑:

·var found

·var i

·var elem

所有三个变量都存在于整个函数中,并且写入了多次。让我们来尝试改进它们中的每一个。

如我们在本章前面讨论过的,中间变量(如found)通常可以通过提前返回来消除。下面是这一点改进:

接下来,看一下elem。它在整个代码中以循环的方式多次用到,这让我们很难跟踪它的值。这段代码让我们觉得elem就是在迭代的值,实际上只是在累加i。所以把while循环重写成对i的for循环。

特别地,请注意elem是如何成为一个只写一次的变量的,它的生命周期只在循环内。用true来作为for循环的条件并不多见,但作为交换,我们可以在同一行里看到i的定义与修改。(传统的while(true)也是个合理的选择。)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文