IIFE (Immediately Invoked Function Expression)

What's the difference between using an IIFE and a block statement with let/const for creating a private scope?
// Approach 1: IIFE
(function() {
  const x = 10;
  console.log(x);
})();

// Approach 2: Block with let/const
{
  const x = 10;
  console.log(x);
}
Next Question (19/25)