2

我的 JavaScript 非常有名,所以当我看到这个结构时,我有点困惑:

var shareProxiesPref = document.getElementById("network.proxy.share_proxy_settings");
shareProxiesPref.disabled = proxyTypePref.value != 1;

proxyTypePref.value仅在需要时才执行 if on ,然后在结果中声明 var不是更好吗?

(顺便说一句,与正常用法相比,我还发现这种形式很难阅读。有一组两个或三个这样的条件,而不是在结果中执行一个带有语句块的 if。)


更新:

这些回复非常有帮助,并要求提供更多背景信息。代码片段来自 Firefox 3,因此您可以在此处查看代码:

http://mxr.mozilla.org/firefox/source/browser/components/preferences/connection.js

基本上,当您查看 Firefox 中的“连接首选项”窗口时,单击代理模式(单选按钮)会导致各种表单元素启用|禁用。

4

3 回答 3

2

(顺便说一句,与正常用法相比,我还发现此表格很难阅读。

不一定,尽管这也是我的第一个想法。代码应该始终强调它的功能,尤其是当它有副作用的时候。如果作者的意图是强调任务,sharedProxiesPref.disabled那么嘿,随它去吧。另一方面,这里发生的操作是禁用对象可能更清楚,在这种情况下条件块会更好。

于 2008-08-25T22:20:04.587 回答
2

这取决于此代码的上下文。如果它在页面加载时运行,那么最好将此代码放在 if 块中。

但是,如果这是验证功能的一部分,并且该字段在页面的整个生命周期中在启用和禁用之间切换,那么这段代码是有意义的。

请务必记住,将 disabled 设置为 false 也会改变页面状态。

于 2008-08-25T23:14:03.753 回答
1

如果没有更多的上下文,很难说做什么更好。

如果每次 proxyTypePref 更改时都会执行此代码,那么您总是需要 set shareProxiesPref.disabled

我同意 if 语句比当前代码更具可读性。

proxyTypePref.value仅在需要时才执行 if on ,然后在结果中声明 var不是更好吗?

如果您严格地谈论变量声明,那么是否将它放在 if 语句中都没有关系。在函数内声明的任何 Javascript 变量都在整个函数的范围内,无论它在哪里声明。

如果您正在谈论 的执行document.getElementById,那么是的,如果您不需要,最好不要拨打电话。

于 2008-08-26T02:51:32.077 回答