Javascript:在条件结果之前声明一个变量?

时间:2008-08-25 22:16:10

标签: javascript

我的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中的连接首选项窗口时,单击代理模式(单选按钮)会导致各种表单元素启用|禁用。

3 个答案:

答案 0 :(得分:1)

  

(顺便说一句,我也发现这种形式与正常使用相比很难阅读。

不一定,虽然这也是我的第一个想法。代码应该始终强调其功能,特别是如果它有副作用。如果作者的意图是强调sharedProxiesPref.disabled的任务,那么嘿,滚动它。另一方面,可以更清楚的是,此处发生的操作是禁用对象,在这种情况下条件块会更好。

答案 1 :(得分:1)

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

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

重要的是要记住,禁用设置为false也会改变页面状态。

答案 2 :(得分:0)

如果没有更多的背景,很难说什么更好。

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

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

  

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

如果你严格谈论变量声明,那么你是否将它放在if语句中并不重要。函数内声明的任何Javascript变量都在整个函数的范围内,无论它在何处被声明。

如果你正在谈论document.getElementById的执行,那么是的,如果你不必这样做,最好不要拨打电话。