期間限定!悪いパーツの 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 );
これは書きかけ。