Вложенные циклы и область видимости в JavaScript

Если у нас есть цикл в цикле, то переменные, объявленные во внешнем цикле, будут доступны во внутреннем. В следующем примере переменная num доступна во внутреннем цикле:

javascriptfor (let i = 0; i <= 9; i++) {
  let num = 3;
  
  for (let j = 0; j <= 9; j++) {
    console.log(num); // выведет 3
  }
}

А вот снаружи внешнего цикла переменная num недоступна:

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

console.log(num); // выдаст ошибку

Переменные, объявленные во внутреннем цикле, недоступны снаружи:

javascriptfor (let i = 0; i <= 9; i++) {
  for (let j = 0; j <= 9; j++) {
    let num = 3;
  }
  
  console.log(num); // выдаст ошибку
}

console.log(num); // выдаст ошибку