2009-08-18 9 views

答えて

4

JavaScript 1.5 specificationの一部です。したがって、それは主要なブラウザによってサポートされなければならない。

+2

新しいECMAScript 5エディションは、strictモードで 'with'ステートメントを削除します。将来のバージョンではおそらくそれをすべて削除します。 –

1

私が今までに見たネイティブJS仕様の一部ではなく、いくつかのすばらしいGoogle-fuでは結果も得られません。どこかにはないとは言えませんが、もし存在すれば、それは十分に文書化されていないか、またはサポートされていないと思います。

編集:フィリップによってパンチに殴られ、明らかに私の答えが間違っています。私は謙虚さのためにここに残しておきます。 ;)

+0

ネルソン氏:「HA!HA!」 –

2

はいそれの一部です。 JavaScript 1.5をサポートするすべてのブラウザがそれをサポートしています(これはすべての主要なブラウザ、つまりグレードAです)。

ただし、withステートメントを使用する場合はnot recommendedです。

+0

+1。特に 'var d = a.b.c 'を使ってより明示的に同じことをもっと明白に達成できるので、' with() 'は面倒なことではありません。 d.attribute = ...; ' –

2

私はそれだけで別の変数(例えば)

// BAD use of with is to replace this: 
// some.expression.with.lots.of.dots.x = 10; 
// some.expression.with.lots.of.dots.y = 20; 
// with this: 
with (some.expression.with.lots.of.dots) { 
    x = 10; 
    y = 20; 
} 

を宣言避けるために使用すべきではないことに同意しない場合でも、私はそれが合理的な使用を持っていることだと思います:

クロージャのもう1つのオプションは、ネストされた関数ですが、これには利点がありますが、で使用するとデバッグの経験が向上することがわかります。

関連する問題