Почему типизация видит в переменной undefined?

Типизация в JavaScript позволяет определить тип данных переменной. В языке JavaScript есть несколько типов данных, и одним из них является тип "undefined".

"Undefined" является специальным значением, которое указывает на отсутствие значения переменной. То есть, когда переменная имеет значение "undefined", это означает, что ей не было присвоено никакое значение, или что она объявлена, но не инициализирована.

Например, если объявить переменную без присваивания значения:

let a;

Тогда типизация увидит эту переменную как "undefined", потому что она не имеет значения.

"Undefined" также может быть возвращено, когда функция не явно возвращает никакое значение. Например:

function foo() {
  // здесь нет return statement
}

let result = foo();
console.log(result); // выведет "undefined"

В этом случае, когда функция foo() вызывается, она не возвращает никакое значение, поэтому переменная result получает значение "undefined".

Также стоит отметить, что при обращении к несуществующим свойствам объекта также получается значение "undefined". Например:

let obj = {};
console.log(obj.foo); // выведет "undefined"

В данном случае, объект obj не имеет свойства с именем "foo", поэтому обращение к этому свойству возвращает значение "undefined".

В итоге, типизация в JavaScript видит переменную как "undefined", когда ей не было присвоено значение, когда функция не возвращает явно значение или когда обращаемся к несуществующему свойству объекта.