我的 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 中查看“连接”首选项窗口时,单击代理模式(单选按钮)会导致各种表单元素启用|禁用。
这取决于这段代码的上下文。如果它在页面加载时运行,那么最好将此代码放在 if 块中。
但是,如果这是验证功能的一部分,并且该字段在页面的整个生命周期中在启用和禁用之间切换,那么这段代码有点有意义。
请务必记住,将 disabled 设置为 false 也会改变页面状态。
(顺便说一句,与正常用法相比,我还发现这种形式很难阅读。
不一定,尽管那也是我的第一个想法。代码应该总是强调它的功能,尤其是当它有副作用的时候。如果作者的意图是强调任务,那么sharedProxiesPref.disabled嘿,顺其自然。另一方面,这里发生的动作是禁用对象本来可以更清楚,在这种情况下条件块会更好。
如果没有更多上下文,很难说做什么更好。
如果每次 proxyTypePref 更改时都执行此代码,那么您将始终需要 set shareProxiesPref.disabled。
我同意 if 语句比当前代码更具可读性。
proxyTypePref.value做一个 if on ,然后仅在需要时在结果中声明 var不是更好吗?
如果您严格地谈论变量声明,那么是否将它放在 if 语句中并不重要。在函数内部声明的任何 Javascript 变量都在整个函数的范围内,无论它在何处声明。
如果您正在谈论 的执行document.getElementById,那么是的,如果您不需要,最好不要拨打该电话。