変数が宣言される前に使用してもエラーにならず、undefinedとなる現象(varの場合)は何ですか。

ホイスティング(巻き上げ)により、var宣言はスコープの先頭に移動したとみなされますが、初期化はされません。