KJS: A Complete Formal Semantics of JavaScript