Инкремент и hoisting var

Задача

Что будет в консоли и почему?

'use strict';
var x = 5;
 
console.log(++x); // ?
console.log(x++); // ?
 
fn();
console.log(x); // ?
 
function fn() {
    console.log(x); // ?
    x += 10;
    console.log(x); // ?
    console.log(typeof x); // ?
    var x = 3;
    console.log(x); // ?
}

Разбор