Zastanawiam się, jakie stany są przechowywane między dwoma wierszami kodu JavaScript przesłanymi do babel-node
. Moje zamieszanie powstaje, ponieważ jeśli napiszesz dwa wiersze kodu, możesz zastąpić definicję zmiennej bez błędu. Na przykład, z babel-node --presets es2015
, można zrobić:Jaki stan jest przechowywany między wierszami JavaScript?
> const a = 1;
undefined
> let a = 2;
undefined
Teraz jeśli napiszesz go w jednej linii, pojawi się błąd:
> const a = 1; let a = 2;
TypeError: repl: Duplicate declaration "a"
...
Wydaje się, że w pierwszym przypadku, państwo, które a
jest zdefiniowany jako utracony (ale nie do drugiego przypisania), podczas gdy w drugim przypadku jest utrzymywany.
Co powoduje różnice tutaj? i które państwa są utrzymywane?
Na miejscu z '' babel-węzeł' będącym konkretnym winowajcą - "replica" węzła wanilii nie wykazuje tego problemu. – naomik