1. 程式人生 > >JS方面重點摘要(二)

JS方面重點摘要(二)

define 個數 賦值初始化 dom元素 blog lee 發生 pos 時間

1、函數聲明與函數表達式
(1)變量聲明會置頂提前,但賦值仍在原地方
(2)函數聲明同變量聲明一樣會提前;但是,函數表達式沒有提前,就相當於平時的變量賦值
(3)函數聲明會覆蓋變量聲明,但不會覆蓋變量賦值:函數聲明優先級高於變量聲明的優先級;但是變量賦值以後,變量賦值初始化就會覆蓋函數聲明。
2、函數arguments屬性初始化:
(1)callee:指向當前函數的引用
(2)length:真正傳遞的參數個數
(3)arguments的索引值小於傳參的個數,則其值和實際傳參的值是共享的;如果大於,則不共享,相方不相關,互不影響
3、and、or、not運算符詳解:
And:(1)一個對象一個布爾,返回對象(2)2個都是對象返回第二個(3)某個是null或NaN,返回null或NaN(4)某個是undefined發生錯誤(5)2個都是布爾,返回布爾


Or:(1)一個對象一個布爾,返回對象(2)2個都是對象返回第一個(3)某個是null或NaN,返回null或NaN(4)某個是undefined發生錯誤
Not:(1)是對象,返回false(2)是0返回true,否則false(3)是null或NaN,返回true;是undefined發生錯誤
技巧:使用2個not運算符判斷變量的布爾值(第一個not返回布爾值,再第二個not取反獲得變量的真實布爾值)
4、性能優化:
(1)避免全局查找:用局部變量存儲全局變量來減少全局查找,因為全局查找需要一直找到作用域鏈最頂端
(2)定時器:少用setTimeout,因為setTimeout每次都會初始化一個定時器,而setInterval只在開始的時候初始化一個定時器

(3)字符串連接少用+=,如果需要多次對同一個字符串進行+=操作的話,可以用數組來緩存,然後join方法連接
(4)數字轉為字符串:"" + > String() > toString() > new String()
(5)浮點數轉為整型推薦用Math.floor()或Math.round(),parseInt多用於將字符串轉為數字
(6)多個變量聲明,使用單var形式,以減少腳本執行時間
(7)多使用直接量更好,如:var array = [];
(8)使用文檔碎片來構建dom結構:document.createDocumentFragment()
(9)使用innerHTML賦值代替構建dom元素

(10)盡量使用更準確的選擇器,減少查找時間;對於獲取兄弟元素,子集元素等也是一樣的道理,盡量是定位更準確,避免循環
(11)刪除dom節點之前,一定要刪除註冊在該節點上的事件,否則會產生無法回收的內存;
此外,在removeChild和innerHTML=""之間選擇後者,因為用removeChild無法有效釋放dom節點
(12)使用事件代理
(13)重復使用的結果,先保存到局部變量,避免多次取值的調用開銷

JS方面重點摘要(二)