一些JS概念

變量提高

JS引擎的工做方式:先解析代碼,獲取全部被聲明的變量,而後再一行一行的運行函數

console.log(a) // undefined 
var a = 2

至關於code

var a
console.log(a)
a = 2

這就是變量提高作用域

函數聲明也會提高,而且優先於表達式
getName() // 1 
function getName() {
  console.log('1')
}
var getName = function() {
  console.log('2')
}
getName() // 2

暫時性死區

ES6的let\const不會變量提高get

typeof a // ReferenceError: a is not defined
let a

由於let不會變量提高,因此在聲明前調用會報錯it

let x = 'outer value'
!(function(){
    console.log(x) //  Cannot access 'x' before initialization
    let x = 'inner value'
})()

ES6規定,let/const命令會使區塊造成封閉的做用域,在這個做用域下,從進入到變量能夠訪問之間的一段時間,就稱之爲暫時性死區,在暫時性死區,該變量都是不可用的io

相關文章
相關標籤/搜索