2

私の JavaScript はかなり名目上のものなので、この構造を見たときはちょっと困惑しました。

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

if on を実行してからproxyTypePref.value、必要な場合にのみ結果内で var を宣言するほうがよいのではないでしょうか?

(ちなみに、この形式は、通常の使用法と比較して非常に読みにくいこともわかりました。結果のステートメントのブロックで単一の if を実行する代わりに、これらの条件の 2 つまたは 3 つのセットがありました。)


アップデート:

回答は非常に役に立ち、より多くのコンテキストを求めました。コード フラグメントは Firefox 3 のものであるため、ここでコードを確認できます。

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

基本的に、 FirefoxのConnect設定ウィンドウを見ると、プロキシモード(ラジオ ボタン) をクリックすると、さまざまなフォーム要素が有効または無効になります。

4

3 に答える 3

2

これは、このコードのコンテキストに依存します。ページの読み込み時に実行されている場合は、このコードを if ブロックに配置することをお勧めします。

ただし、これが検証機能の一部であり、フィールドがページの有効期間中に有効と無効の間で切り替わる場合、このコードは理にかなっています。

disabled を false に設定すると、ページの状態も変更されることに注意してください。

于 2008-08-25T23:14:03.753 に答える
2

(ちなみに、このフォームも通常の使用法に比べて非常に読みにくいと感じました。

それは私の最初の考えでもありましたが、必ずしもそうではありません。特に副作用がある場合、コードは常にその機能を強調する必要があります。作家の意図が課題を強調することだった場合は、sharedProxiesPref.disabledそれでロールバックします。一方、ここで行われているアクションがオブジェクトを無効にすることであることがより明確になる可能性があり、その場合は条件付きブロックの方が適切でした。

于 2008-08-25T22:20:04.587 に答える
1

より多くのコンテキストがなければ、何をするのが良いかを言うのは難しい.

proxyTypePref が変更されるたびにこのコードが実行される場合は、常に set が必要になりますshareProxiesPref.disabled

if ステートメントは、現在のコードよりも少し読みやすいという意見には同意します。

if on を実行してからproxyTypePref.value、必要な場合にのみ結果内で var を宣言するほうがよいのではないでしょうか?

厳密に変数宣言について話しているのであれば、if 文の中に入れても入れなくても構いません。関数内で宣言された Javascript 変数は、宣言されている場所に関係なく、関数全体のスコープ内にあります。

の実行について話している場合はdocument.getElementById、そうです。必要がない場合は、その呼び出しを行わない方がはるかに優れています。

于 2008-08-26T02:51:32.077 に答える