ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのwith文の機能と副作用を詳しく解説

JavaScriptのwith文の機能と副作用を詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-07-25 14:05:511549ブラウズ

with ステートメントを定義する目的は、主に、同じオブジェクトを複数回記述する作業を簡略化することです

with ステートメントは、スコープ チェーンの先頭にオブジェクトを追加し、ステートメントを実行し、最後にスコープ チェーンを復元します元の状態に戻す

with(object){
  statement;
}

Function

オブジェクトが深くネストされている場合、コードの記述を簡素化するために通常 with ステートメントが使用されます。基本的に、新しい字句スコープは、オブジェクトの参照をスコープとして扱い、オブジェクトのプロパティをスコープ内の識別子として扱うことによって作成されます。クライアント側の JavaScript では、次のような式を使用して HTML 内の要素にアクセスできます。 form

document.forms[0].address.value

この式がコード内で複数回出現する場合、with ステートメントを使用してフォーム オブジェクトをスコープ チェーンの最上位に追加できます

with(document.forms[0]){
name.value = '';
address.value = '';
emai.value = '';
}

このアプローチでは、それぞれにプレフィックスを付ける必要がなくなるため、多くの入力作業が軽減されます。 document.forms[0] のプロパティ名。このオブジェクトはスコープ チェーンに一時的にマウントされます。JavaScript がアドレスなどの識別子を解析する必要がある場合、このオブジェクト内で自動的に検索されます。 [注意] with ステートメントはオブジェクトのプロパティを読み取るためのショートカットを提供します。オブジェクトのプロパティを作成します

オブジェクト o が属性 x を持つ場合、次のコードはこのプロパティに値 1 を割り当てます

var o = {x:0};
with(o) x = 1;
console.log(o.x);//1

属性 =1 がまったく同じである場合。これは、変数に対してLHSクエリが実行されるためです with文を使用したコードと比べて動作が遅くなります


さらに、with文が不適切な場合、変数リークを引き起こし、グローバルスコープを汚染する可能性があります

var o = {};
with(o) x = 1;
console.log(o.x);//undefined
console.log(x);//1

Strictモード

strictモードではwith文の使用は禁止されています

var x = 1;
var o = {};
with(o){
x = 2;
}
console.log(x);//2
console.log(o.x);//undefined

以上がJavaScriptのwith文の機能と副作用を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。