The article is slightly wrong. The TDZ is the zone before the variable is declared, not after. Referencing variables before they're declared isn't valid for `let` and hence it needs a TDZ check.

Consider

    console.log(foo)
    let foo
vs

    console.log(foo)
    var foo
I think the article confuses "in scope" with "declared", and "declared and initialised" with "initialised".