Дениска (
etcs.ru ) меня сегодня порадовал ещё раз:
public function test()void {
var a:String;
trace( typeof a ); //string
}
в чём же прикол? по логике в
a записан
null а значит результатом должен быть
object, но мы наблюдаем
string.
оказывается компилятор превращает это вот такой вот код:
_as3_pushnull
_as3_coerce_s
_as3_setlocal <1>
_as3_findpropstrict trace
_as3_pushstring "string"
_as3_callpropvoid trace(param count:1)
в хуманабельном виде это выглядит так:
public function test() : void {
var _loc_1:String = null;
trace("string");
return;
}
тоесть копилятор оптимизирует выражение
typeof a до выражение
string, но этот же копилятор не умеет оптимизировать математические выражения =) лол.