でのJavaScriptエミュレーションブロッキング


良い写真を見つけてくれた ant99と写真家に感謝します
少し前に、letコンストラクトを使用してJavaScriptで可視性をブロックする方法について書きました。 コメントから判明したように、let(JavaScript 1.7-1.8.5など)は、サルおよびRhinoベースのブラウザでのみサポートされています。 がっかりしましたが、約15分前に、それほど美しくはないが、それでも動作するコードの松葉杖を思いつきました(おそらく、大声で言われたと思いますが)。 with構造を使用します(はい、それは役に立たず、非効率であるために悪い部品としてランク付けされていることを知っていますが、今は最初のステートメントに反論します)。



簡単な例を考えてみましょう。
letコンストラクトを使用すると、次のようになります。
foo = 10; bar = 20; let(foo=20,bar=10){ console.log(foo,bar); //20 10 } console.log(foo,bar); //10 20 


そして:
 foo = 10; bar = 20; with({ foo:20, bar:10 }){ console.log(foo,bar); //20 10 } console.log(foo,bar); //10 20 


さらに、「スコープ」の変更は、外部領域の変更にはつながりません。 例:
 foo = 10; with({ foo:20 }){ foo = 200; } console.log(foo); //10 


したがって、withはletのような強力なツールではありませんが、ほとんどのブラウザーでサポートされています。
関数でスコープを制御することに反対するつもりはありませんが、小さなスコープの関数は面倒すぎる場合があることを思い出してください。

PSより多くの例を検討することはできますが、原理的にはすべて同じであるため、これを行う必要はないと考えています。
PS2 Habrauser ertaquoのおかげで、スペルと読みやすいスタイルに
PS3はい、ロシア語に問題があります。年齢を見て理解するだけです。

Source: https://habr.com/ru/post/J117632/


All Articles