數據類型和引用類型
數據類型:null、undefined、string、number、Boolean、symbol
引用類型:object、function、array
什麼是內存
就是內存條通電後產生的可存儲數據的空間(臨時的)
內存條的產生和死亡:內存條(電路板)==》通電==》產生內存空間==》存儲數據==》處理數據==》斷電==》內存空間和數據都消失
內存分類:
棧和堆,棧先進先出,堆先進後出
棧:全局/局部變量(函數名)
堆:對象(函數)
問題: var a = xxx, a內存中到底保存的是什麼?
- xxx是基本數據, 保存的就是這個數據
- xxx是對象, 保存的是對象的地址值
- xxx是一個變量, 保存的xxx的內存內容(可能是基本數據, 也可能是地址值)
var a = 3 //內存保存的是3
var a = function(){...} // 內存保存的是function的地址值
var b = "5"
var a = b; //內存保存的是“5”
內存、變量、數據之間的關係
內存是用來存儲數據的空間
變量是內存的標識
undefined和null區別
undefined代表定義未賦值
null定義並賦值了,只是值爲空
什麼時候給對象賦值爲null
初始賦值,讓對象成爲null對象
var b = null;
結束前,讓對象成爲垃圾對象(被垃圾回收機制回收)
var b = ['aa',5];
b = null;
如何調用執行函數
test():直接調用
obj.test():通過對象調用
new test():new 調用
test.call/apply(obj):臨時讓test成obj的方法進行調用
什麼樣的函數纔是回調函數
- 你定義的
- 你沒有調用的
- 但最終執行了
常見的回調函數
- DOM事件回調函數
- 定時器回調函數
- Ajax回調函數
- 生命週期回調函數