前端知識點系列三:JavaScript
持續更新……
1. JavaScript基本數據類型
- undefined
- null
- boolean
- number
- string
- Symbol (es6)
2. null,undefined 的區別
- null 表示一個對象被定義了,值爲“空值”;
- undefined 表示不存在這個值。
typeof undefined //"undefined"
undefined :是一個表示”無”的原始值或者說表示”缺少值”,就是此處應該有一個值,但是還沒有定義。當嘗試讀取時會返回 undefined;
例如變量被聲明瞭,但沒有賦值時,就等於undefined
typeof null //"object"
null : 是一個對象(空對象, 沒有任何屬性和方法);
例如作爲函數的參數,表示該函數的參數不是對象;
3. JavaScript的基本規範
- 不要在同一行聲明多個變量。
- 請使用 ===/!==來比較true/false或者數值
- 使用對象字面量替代new Array這種形式
- 不要使用全局函數。
- switch語句必須帶有default分支
- 函數不應該有時候有返回值,有時候沒有返回值。
- for循環必須使用大括號
- if語句必須使用大括號
- for-in循環中的變量 應該使用var關鍵字明確限定作用域,從而避免作用域污染。
4. 數據模型
- 棧:原始數據類型(Undefined,Null,Boolean,Number、String)
- 堆:引用數據類型(對象、數組和函數)
兩種類型的區別是:存儲位置不同
- 原始數據類型直接存儲在棧(stack)中的簡單數據段,佔據空間小、大小固定,屬於被頻繁使用數據,所以放入棧中存儲;
- 引用數據類型存儲在堆(heap)中的對象,佔據空間大、大小不固定,如果存儲在棧中,將會影響程序運行的性能;
引用數據類型在棧中存儲了指針,該指針指向堆中該實體的起始地址。當解釋器尋找引用值時,會首先檢索其在棧中的地址,取得地址後從堆中獲得實體。
stack.gif
5. 移動端如何獲取頁面寬度。
document.documentElement.clientWidth
6. 寫一個函數節流方法
throttle(method, context) {
clearTimeout(method.id);
method.id = setTimeout(function(){
method.call(context);
}, 100)
}
7. XHR對象的readyState屬性有哪些?
- 0:未初始化。
open()
沒有調用 - 1:啓動。
open()
被調用,send()
還沒被調用 - 2:發送。
send()
被調用,還未收到響應數據 - 3:接受。正在接收響應數據
- 4:完成。已經收到全部響應數據