It's an implementation error. In Firefox, it correctly throws:
> ReferenceError: can't access lexical declaration `a' before initialization
No, legacy const is not spec'd by ES5. It behaves differently in FireFox and V8 because it was added at different times with different semantics in the live range hole case. In strict mode, it will throw on V8 as well.