什麼是做用域:瀏覽器給js的生存環境叫做用域。面試
什麼是變量提高:瀏覽器
Js代碼執行前,瀏覽器會給一個全局做用域window函數
Window分兩個模塊一個是存儲模塊一個是執行模塊spa
存儲模塊找到全部的var和function 關鍵字給這些變量添加內存地址3d
執行模塊,代碼從上到下執行,遇到變量就會去存儲模塊查找,有和沒有blog
有就看你賦值沒有,賦值了就是後面的值沒有賦值就是undefined。內存
沒有結果就是xxx is not defined原型鏈
什麼是原型鏈:函數內部的變量被使用時,首先會在本身的私有做用域下查找是否有這個變量,有就直接使用,沒有就向他的上一級查找,父級有就使用父級的,父級沒有就以此繼續向上查找直到查找帶window有就使用沒有就是is not defined。這種查找機制咱們叫原型鏈。作用域
案例分析原型
函數歸屬誰,跟她在哪調用沒有關係,而是在哪定義有關。
函數外的變量叫全局變量,函數內的變量叫私有變量。
看變量歸誰,看他在哪一個做用域下聲明。
360經典面試題
+function(){
console.log(a)
var a=5;
function a(){}
console.log(a)
function b(){}
b=6
console.log(b)
var c=d=b
}()
console.log(d)
console.log(c)
做者:晉飛翔
QQ:318080891