Разница между undefined и not defined в JavaScript заключается в следующем:
Таким образом, undefined указывает на то, что переменная объявлена, но ей ещё не присвоено значение, а not defined — на то, что переменная не объявлена в текущей области видимости. 1
Например, undefined возникает, когда переменной было объявлено, но ей ещё не было присвоено никакого значения, а not defined — когда пытаются получить доступ к переменной, которая не была инициализирована или объявлена ранее. 4