глобальные области видимости javascript

let a
let b 

function myFn() {
    let b; 
    a = true;
    b = 10;
    console.log(b)
}

myFn()

console.log(a) // true
console.log(b) // undefined

почему console.log(a) выдает true? a = true находится в локальной области функции myFn и переменная a из глобальной области будет undefined поэтому я ожидал что console.log(a) выдаст undefined


Ответы (1 шт):

Автор решения: Алексей Шиманский

a = true находится в локальной области функции myFn

переменная объявлена вне функции, так что её область начинается значительно выше, нежели действие этой функции. Вот если бы в функции произошло бы объявление новой переменной через ключевое слово let/const a = ..., тогда бы это означало, что переменная создана внутри той самой своей области. А так. Всё верно.

→ Ссылка