バッドノウハウ x 3
id="foo" の要素にアクセス
普通はこう
<script id="foo"> alert(document.getElementById("foo").txt); </script>
document.getElementById は省略できる
<script id="foo"> alert(foo.txt); </script>
27byte減 ショートコーダーならスルーしがたい小悪魔的誘惑
IEを判別(IE="\v"=="v";) (13byte)
IE5〜IE8でtrueになるのはJScript5.xが垂直タブ(\v)を無視した比較を行うから だがJScript8.0ではfalseになる IE9で通用する保障が無い
他には
- IE=!!top.execScript; // ダメ Chrome でも true (20 byte)
- IE=!!top.ScriptEngine; // 今考えた (22 byte)
- IE=!!document.uniqueID; // uupaa.js 式 (23 byte)
条件コンパイルが許せるならこんな手もあるが圧縮ツールの選択肢が減る
副作用のある代入
未定義を知るC/C++ モンキーはこんなコードを生産しない
var i = 0; while (i < 10) this[i++] = this[i];
Google Code 全体を this[i++] = this[i] で検索した
http://www.google.com/codesearch?hl=ja&lr=&q=this\[i\%2B\%2B\]\s*%3D\s*this\[i\]+&sbtn=%E6%A4%9C%E7%B4%A2
2つのJavaScriptプロジェクトがヒット