我的JavaScript非常名义,所以当我看到这个结构时,我有点困惑:
var shareProxiesPref = document.getElementById("network.proxy.share_proxy_settings");
shareProxiesPref.disabled = proxyTypePref.value != 1;
在proxyTypePref.value
上执行if是不是更好,然后只在需要时在结果中声明var?
(顺便说一句,我也发现这个表单与正常用法相比很难阅读。有一组两个或三个这样的条件,而不是在结果中使用一个语句块做单个。)
更新
回复非常有用,并要求提供更多背景信息。代码片段来自Firefox 3,因此您可以在此处查看代码:
http://mxr.mozilla.org/firefox/source/browser/components/preferences/connection.js
基本上,当您查看Firefox中的连接首选项窗口时,单击代理模式(单选按钮)会导致各种表单元素启用|禁用。
答案 0 :(得分:1)
(顺便说一句,我也发现这种形式与正常使用相比很难阅读。
不一定,虽然这也是我的第一个想法。代码应该始终强调其功能,特别是如果它有副作用。如果作者的意图是强调sharedProxiesPref.disabled
的任务,那么嘿,滚动它。另一方面,可以更清楚的是,此处发生的操作是禁用对象,在这种情况下条件块会更好。
答案 1 :(得分:1)
这取决于此代码的上下文。如果它在页面加载时运行,那么最好将此代码放在if块中。
但是,如果这是验证函数的一部分,并且字段在页面的整个生命周期内在启用和禁用之间切换,那么这种代码就有意义了。
重要的是要记住,禁用设置为false也会改变页面状态。
答案 2 :(得分:0)
如果没有更多的背景,很难说什么更好。
如果每次proxyTypePref更改时执行此代码,那么您总是需要设置shareProxiesPref.disabled
。
我同意if语句比当前代码更具可读性。
在
proxyTypePref.value
上执行if是不是更好,然后只在需要时在结果中声明var?
如果你严格谈论变量声明,那么你是否将它放在if语句中并不重要。函数内声明的任何Javascript变量都在整个函数的范围内,无论它在何处被声明。
如果你正在谈论document.getElementById
的执行,那么是的,如果你不必这样做,最好不要拨打电话。