JS notes x var let const re-initialisation yes yes no re-declaration yes no no scope function block block hoisting yes yes TDZ yes TDZ