Hint
Think about scope, hoisting, and reassignment
var is function-scoped and hoisted (initialized as undefined). let and const are block-scoped and in a Temporal Dead Zone before declaration.
var x = 1;
let y = 2; // block-scoped, reassignable
const z = 3; // block-scoped, binding locked
if (true) {
var a = 'leaks out';
let b = 'stays in';
}
console.log(a); // 'leaks out'
console.log(b); // ReferenceError
const doesn't make values immutable — objects/arrays can still be mutated. The binding is locked, not the value.