期間限定!悪いパーツの with の覚書。

  • ショートコーディングには、かかせない(?)命令 『with』

どんな時に使えるかというと、文字数を減らすとき。たとえば、

var point = { x: 1, y: 2, z: 3 };
var px = point.x;
var py = point.y;
var pz = point.z;

with を使うと

var point = { x: 1, y: 2, z: 3 };
var px, py, pz;

with( point ) {
  px = x;
  py = y;
  pz = z;
}

なんとなくだけど、これは内部では、全部に変数 point がつきまくる。きっとこう。

var point = { x: 1, y: 2, z: 3 };
var px, py, pz;

with( point ) {
  point.px = point.x;
  point.py = point.y;
  point.pz = point.z;
}

みたいに展開され、変数 point.px がないので、with の手前で宣言した px が使われる。
同じように py pz と続く。きっと短さの代償に、速度を失う。
でも、書き覚えておきたいのは、こんな使い方じゃない。こんな時にだ。

<input type="text" id="count" value="">

//_______
cnt = 10;
tmId = null;

function hoge( ) {
  document.getElementById( 'count' ).value = cnt--;
  if( cnt == 0 ) clearInterval( tmId );
};

tmId = setInterval( hoge, 1000 );

この変数 cnt と tmId は、グローバル変数なので、いかにもダサい。これをいわゆるクロージャーになるように展開する

function hoge( target, cnt ) {
  var e = document.getElementById( target );
  var tmid = null;
  var cbFunc = function( ) {
    e.value = cnt--;
    if( cnt == 0 ) {
      clearInterval( tmid );
    } 
  };

  tmid = setInterval( cbFunc, 1000 );
}
hoge( 'count', 10 );


これは書きかけ。