すぐに動かせるJavaScript入門

with文

with文はスコープチェーンを一時的に変更するのに使います。長いオブジェクト名のオブジェクトのプロパティを参照する場合などにタイプ量を節約するのに使うことができます。with文の構文は次の通りです

with文の構文

with (object)
    statement

with文を使うと次のような長ったらしい文が

with文を使わない例

frames[1].document.forms[0].address.value = ""; frames[1].document.forms[0].name.value = ""; frames[1].document.forms[0].email.value = "";

次のようにかけます

with文を使った例

with(frames[1].document.forms[0]){ name.value = ""; address.value = ""; email.value = ""; }

with文を使うと、指定したオブジェクト(上の例ではframes[1].document.forms[0])が一時的にスコープチェーンに追加されるのでnameとうつとframes[1].document.forms[0].nameを検索してくれます。with文は最適化が難しいなどの欠点があるため、with文はあまり使用しない方が良いとされることもあります。上のコードは代替策として次のように記述できます。

with文の代替案

var form = frames[1].document.forms[0]; form.name.value = ""; form.address.value = ""; form.email.value = "";

since 2013