当执⾏ JS 代码时,会⽣成执⾏环境,只要代码不是写在函数中的,就是在 全局执⾏环境中,函数中的代码会产⽣函数执⾏环境,只此两种执⾏环境。
b() // call b
console.log(a) // undefined
var a = 'Hello world'
function b() {
console.log('call b') }
在提升的过程中,相同的函数会覆盖上⼀个函数,并且函数优先于变量提升
b() // call b second
function b() {
console.log('call b fist') }
function b() {console.log('call b second') }
var b = 'Hello world'
var 会产⽣很多错误,所以在 ES6中引⼊了 let 。 let 不能在声明前使 ⽤,但是这并不是常说的 let 不会提升, let 提升了,在第⼀阶段内存也 已经为他开辟好了空间,但是因为这个声明的特性导致了并不能在声明前使⽤