А, вононо что, похоже, возникло некое недопонимание.
То, что некоторые воспринимают как оптимизацию кода компилятором, на самом деле - идеологическая особенность функционирования адобовского интерпретатора. Дело в том, что нельзя просто так взять и объявить локальную переменную в произвольном месте, написав соответствующую строку в коде. Яваскрипт машина, повторяю, создает все локальные переменные одновременно с блоком кода порождающей их функции, в каком бы месте они не были объявлены. Собственно, строка "var I" никакого кода не порождает вообще - это просто директива препроцессора добавить ещё одну (если нет такой же) локальную переменную к данной функции. Мы сейчас говорим именно об адобовской реализации, в браузерном яваскрипте все возможно.