質問

見たJavaScriptコードを始めとする with.ことになるビット混乱している。どのような方は使用できるのを確認してください。◆

with (sObj) return options[selectedIndex].value;
役に立ちましたか?

解決

これは、ブロックに含まれるステートメントの範囲に追加します:

return sObj.options[selectedIndex].value;

になることができます:

with (sObj)
    return options[selectedIndex].value;

あなたのケースでは、それは全体の多くを行う...しかし、次のことを考慮しdoens'tます:

var a, x, y;
var r = 10;
a = Math.PI * r * r;
x = r * Math.cos(PI);
y = r * Math.sin(PI /2);

になります:

var a, x, y;
var r = 10;
with (Math) {
  a = PI * r * r;
  x = r * cos(PI);
  y = r * sin(PI / 2);
}

...キーストロークのカップルが保存されます。 Mozillaのドキュメントは、実際に(それを使用しての長所と短所と一緒に)もう少し詳細に物事を説明するのはかなり良い仕事をします:

と - Mozillaのデベロッパーセンター

他のヒント

そのではブロックで次のように入力する必要がいけない。

sObj.options[selectedIndex].value

しかし、あなたは、単に使用することができます:

options[selectedIndex].value

思いをこめ性能の問題が、どのようには:

オブジェクト sObj (ここではそのselect要素)、すべての児童の性質を参照すること(または間に以下の巻きブレース)取り扱いとその親会社です。

あなたの例では、...

のように書き換えることができ
return sObj.options[selectedIndex].value;
声明「は」 ...として供給されたオブジェクトのスコープ内のすべての関連のステートメントを配置します。この場合、それはそれは入力の手間を節約し、あなたが「SOBJ」上の操作の多くをやっていたならば、かなり無意味だけど。

完全に架空の例..

with (sObj) 
{
   if(options[selectedIndex].value < 10){
       options[selectedIndex].value++;
       total+ = options[selectedIndex].value;
   }
}

しかしは、それが保存タイピングがより良い方法で達成することができることが多い場合だ、と述べた。

これは、関数(それが編集された前のように質問のタイトルに示された)が、声明ではありません。コードサンプルはそうのようにフォーマットされている場合にはより多くの意味を行うことがあります:

with (sObj){
    return options[selectedIndex].value;
}

それは(
ソースの)何をするかについて
  ステートメントを使用してステートメントのセットのためのデフォルトのオブジェクトを設定します。 JavaScriptは名前がデフォルトのオブジェクトのプロパティであるかどうかを判断するために文のセット内の任意の非修飾名を検索します。非修飾名は、プロパティと一致する場合、そのプロパティは声明の中で使用されています。そうでない場合は、ローカルまたはグローバル変数が使用されます。

optionssObjのプロパティがある場合のサンプルコードでは、それが最初にチェックされることを意味します。それは次にoptions sObj.optionsを指している場合、そうでない場合は、名前options

によって定義された変数の他のスコープをチェックします withステートメントを使用しての欠点は、それだけでアクセスしますどのようなコードを一瞥から知ることは不可能であるということです。 この記事に示すように、他のより良い選択肢があります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top