Loops Aninhados e Escopo em JavaScript

Se tivermos um loop dentro de outro, as variáveis declaradas no loop externo estarão acessíveis no loop interno. No exemplo a seguir, a variável num está acessível no loop interno:

javascriptfor (let i = 0; i <= 9; i++) {
  let num = 3;
  
  for (let j = 0; j <= 9; j++) {
    console.log(num); // exibirá 3
  }
}

No entanto, fora do loop externo, a variável num não está acessível:

javascriptfor (let i = 0; i <= 9; i++) {
  let num = 3;
  
  for (let j = 0; j <= 9; j++) {
    
  }
}

console.log(num); // dará um erro

Variáveis declaradas no loop interno não estão acessíveis fora dele:

javascriptfor (let i = 0; i <= 9; i++) {
  for (let j = 0; j <= 9; j++) {
    let num = 3;
  }
  
  console.log(num); // dará um erro
}

console.log(num); // dará um erro