>>37
> なんで1, 5, 7番目のconsole.log();がundefinedでなくnullになるのかは知らんけど

だから、宣言(関数の宣言 と 変数の宣言)のみが巻き上げられるんだって
わからなかったら、var文とfunction文が一番上にくると思えばいい

var f;
console.log(f); // null
f = () => {}
f=null;
console.log( f ); // null

var g;
console.log(g); // null
g = function (){} // ※これは文ではないので関数宣言ではない
g=null;
console.log( g ); // null

function h(){}
console.log(h); // function h()
h=null;
console.log( h ); // null

var i
console.log(i); // null
i = 1;
i=null;
console.log(i); // null