Hoisting in JavaScript moves variable and function declarations to the top of their scope before execution.In ES5, var variables are hoisted with undefined, and function declarations are fully hoisted.In ES6+, let and const are hoisted but enter a Temporal Dead Zone (TDZ), causing errors if accessed before declaration.Arrow functions are not hoisted and must be declared before use.