棧和隊列的區(qū)別?
- 棧的插入和刪除操作都是在一端進行的扣孟,而隊列的操作卻是在連端進行的良瞧。
- 隊列先進先出,棧后進后出
- 棧只允許在表尾一端進行插入和刪除悄晃,而隊列只允許在表尾一端進行插入玫霎,在表頭一端進行刪除
棧和堆的區(qū)別?
- 棧區(qū)(stack)— 由編譯器自動分配釋放妈橄,存放函數的參數值庶近,局部變量指等。
- 堆區(qū)(heap)— 一般由程序員分配釋放眷蚓,若程序員不釋放鼻种,程序結束時可能由OS回收。
- 堆(數據結構):堆可以被看成是一顆樹沙热,如:堆排序叉钥;
- 棧(數據結構):一種先進后出的數據結構。
你覺得jquery或zepto源碼有哪些寫的好的地方
jquery源碼封裝在一個匿名函數的自執(zhí)行環(huán)境中篙贸,有助于防止變量的全局污染沼侣,然后通過傳入window對象參數,可以使window對象作為局部變量使用歉秫,好處是當jquery中訪問window對象的時候蛾洛,就不用將作用域鏈退回到頂層作用域了,從而可以更快的訪問window對象。同樣轧膘,傳入undefined參數钞螟,可以縮短查找undefined時的作用域鏈。
(function( window, undefined ) {
//用一個函數域包起來谎碍,就是所謂的沙箱
//在這里邊var定義的變量鳞滨,屬于這個函數域內的局部變量,避免污染全局
//把當前沙箱需要的外部變量通過函數參數引入進來
//只要保證參數對內提供的接口的一致性蟆淀,你還可以隨意替換傳進來的這個參數
window.jQuery = window.$ = jQuery;
})( window );
jquery將一些原型屬性和方法封裝在了jquery.prototype中拯啦,為了縮短名稱,又賦值給了jquery.fn熔任,這是很形象的寫法褒链。有一些數組或對象的方法經常能使用到,jquery將其保存為局部變量以提高訪問速度疑苔。
jquery
實現的鏈式調用可以節(jié)約代碼甫匹,所返回的都是同一個對象,可以提高代碼效率惦费。