1.預解釋
- 在瀏覽器加載的時候,首先會提供一個供全局js代碼執行的環境 —全局作用域(global/window)
- 預解釋:在當前作用域中,在js代碼執行之前,瀏覽器會默認的把帶var跟function的進行聲明與定義
var num = 12;
var obj = {name:'zhang',age:13};
funtion fn(){
console.log('zzzz');
}
console.log(fn);
console.log(fn());
理解聲明與定義
- 聲明:var num 告訴瀏覽器在全局的作用域中有一個num的變量了,如果一個變量只是聲明瞭但是沒有賦值,默認的值是undefined
- 定義:num=12 給我們的變量進行賦值
var與function預解釋的區別
- var:在預解釋的時候只是提前的聲明
- funciton:在預解釋的時候提前的聲明+定義都完成了
預解釋只發生在當前的作用域下
- 開始只對window下的進行預解釋
- 只有函數執行的時候纔會對函數中的進行預解釋
js的內存分類
- 棧內存:用來提供一個供js代碼執行的環境—>作用域(全局作用域、私有)
- 堆內存:用來存儲引用數據類型的值—>對象存儲的是屬性名和屬性值。函數存儲代碼字符串