var: variables declared using the var keyword are scoped to the function in which they are created, or if created outside of any function, to the global scope.
let & const: are block-scoped, meaning they are only accessible within the nearest set of curly braces (function, if-else block, for loop, etc)
var, let and const declared variables are all hoisted. var declared variables are auto-initialized with an undefined value. However, let and const variables are not initialized and accessing them before the declaration will result in a ReferenceError exeption because they are in a "temporal dead zone" from the start of the block until the decleration is processed.