LoginSignup
0
0

More than 5 years have passed since last update.

withステートメントの問題点

Posted at

コードヒントもシンタックスカラーもコンパイルエラーも出ない

以下の例で、Graphicsのメンバ関数であるbeginFill()とかのコードヒントも出ないし、シンタックスカラーも適応されません。
そして、定義されていない適当な関数を書いてもなんとエラーが出ないし、実行するまでわからないのです。

const rect:Shape = new Shape();
with (rect.graphics)
{
    beginFill(0xffffff);
    drawRect(0, 0, 100, 1);
    endFill();
    test(); // 定義されていない関数を書いてもコンパイルエラー出ない
}

プロパティの追加ができない

オブジェクトのプロパティ追加ができるのかと思えばできないです。

var obj:Object = {};
// obj.temp = 0; ←スコープ外で宣言してやらないとwith内ではつかえない
with (obj)
{
    temp =  10;
}
trace(obj.temp);
実行結果
undefined

コメントアウトを外せば、ちゃんと反映されます。

実行結果
10

スコープのレベルが関数内で変わるような処理はあまりすべきでないってことのような気がします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0