Warum führt dieser Code nicht zu einem ReferenceError?

if(true) {
  tmp = 'abc';
  console.log(tmp);//which should throw referenceError but not

  let tmp;
  console.log(tmp);

  tmp = 123;
  console.log(tmp);
}

Dieser Code ergibt

abc
undefined
123

Warum gibt das erste console.log (tmp) keinen Fehler aus?

warum sollte es einen referenceError werfen

assen Sie uns in ECMAScript 2015 die Variable an den oberen Rand des Blocks setzen. Das Verweisen auf die Variable in dem Block vor der Variablendeklaration führt jedoch zu einem ReferenceError. Die Variable befindet sich vom Beginn des Satzes bis zur Verarbeitung der Deklaration in einer "temporären Totzone".

as Problem sind die Einstellungen in der Bibel, denke ic Also, vielleicht ist es ein Bug von Babel?https: //github.com/babel/babel.github.io/issues/82

Antworten auf die Frage(6)

Ihre Antwort auf die Frage