返回介绍

其他多用途代码

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

当调试JavaScript代码时,程序员经常使用alert()来弹出消息框,把一些信息显示给他们看,这是Web版本的“printf()调试”。例如,下面函数调用会用Ajax把数据提交给服务器,然后显示从服务器返回的字典。

这段代码的高层次目标是“对服务器做Ajax调用,然后处理响应结果”。但是有很多代码都在处理不相关的子问题,也就是美化字典的输出。把这段代码抽取到一个像format_pretty(obj)这样的函数中很简单:

意料之外的好处

出于很多理由,抽取出format_pretty()是个好主意。它使得用代码更简单,并且format_petty()是一个很方便的函数。

但是还有一个不那么明显的重要理由:当format_pretty()中的代码自成一体后改进它变得更容易。当你在使用一个独立的小函数时,感觉添加功能、改进可读性、处理边界情况等都更容易。

下面是format_pretty(obj)无法处理的一些情况。

·它期望obj是一个对象。如果它是个普通字符串(或者undefined),那么当前的代码会抛出异常。

·它期望obj的每个值都是简单类型。否则如果它包含嵌套对象的话,当前代码会把它们显示成[object Object],这并不是很漂亮。

在我们把format_pretty()拆分成自己的函数之前,感觉要做这些改进可能会需要大量的工作。(实际上,迭代地输出嵌套对象在没有独立的函数时是很难的。)

但是现在增加这些功能就很简单了。改进后的代码如下:

上面的代码把前面提到的不足都改正了,产生的输出如下:

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

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

发布评论

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