うそ
Flashに面白くも可愛くもない嘘を出力させてみる
undefinedはpushundefinedではなくてgetlex undefined(undefinedという名前のプロパティを探す)という命令でコンパイルされるから
スコープの中にundefinedプロパティを持ったオブジェクトが入っていたら正しくundefinedを参照できなくなっちゃうっていうお話。
undefinedと同じく、予約語ではなくグローバル定数として定義されているNaNとInfinityもgetlex
/**
* Copyright 12346 ( http://wonderfl.net/user/12346 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/5qy2
*/
package{import com.actionscriptbible.Example;
public class AprilFool extends Example{
public function AprilFool(){
with(lie)trace(undefined,NaN,Infinity);
}
}}
function get lie():*{
var $:*=this;
$[$.$]=/.......$/($.$);
$[$]=(~$>>>$)/~~$;
$[$/$]=<>{/./($/$)}{/.$/($[$])}{/.$/(/../(!$))}</>;
$[$[$]]=<>{/./(/....$/(~$<<~$))}.{/..$/(/..../(~$<<~$))}</>;
return $;
}