javascript es6 features Closure Callback hell Currying function Var hoisting Promises Prototype inhertiance Object creation type