標籤:一個 存在 變數 style 調用 eth 全域變數 回調 justify
###1、閉包
??閉包就是能夠讀取其他函數內部變數的函數。由於在Javascript語言中,只有函數內部的子函數才能讀取局部變數,因此可以把閉包簡單理解成"定義在一個函數內部的函數"。所以,在本質上,閉包就是將函數內部和函數外部串連起來的一座橋樑。`閉包的作用是為了防止全域變數泛濫`。
*`使用閉包的注意點:`*
* 1)由於閉包會使得函數中的變數都被儲存在記憶體中,記憶體消耗很大,所以不能濫用閉包,否則會造成網頁的效能問題,在IE中可能導致記憶體泄露。解決方案是,在退出函數之前,將不使用的局部變數全部刪除。
* 2)閉包會在父函數外部,改變父函數內部變數的值。所以,如果你把父函數當作對象(object)使用,把閉包當作它的公用方法(Public Method),把內部變數當作它的私人屬性(private value),這時一定要小心,不要隨便改變父函數內部變數的值。
###2、變數提升
??變數提升指的是在瀏覽器解析JS檔案是,把定義的變數或者函數會先解析,然後在解析其他代碼,也就是說,JS當中可以先使用變數,然後在定義。但是
如果在定義變數的時候,給變數進行了初始化的話,該變數是不會被提升的!附:在es6代碼規範中,必須先定義變數,才可以使用變數。
###3、高階函數
??高階函數其實很簡單,只要輸出形式是print(‘hello‘)(‘world‘);的就行。例如:
javascript:
var Moqi = function(p1){
this.add = function (p2){
return p1 + ‘ ‘ + p2;
};
return add;
};
console.log(Moqi(‘Hello‘)(‘World‘));
###4、Callback回呼函數
* jQuery Callback 函數
當動畫 100% 完成後,即調用 Callback 函數。
典型的文法:
`$(selector).hide(speed,callback);`
callback參數是一個在 hide 操作完成後被執行的函數。
錯誤(沒有 callback):
$("p").hide(1000); alert("The paragraph is now hidden");
正確(有 callback):
`$("p").hide(1000,function(){ alert("The paragraph is now hidden"); });`
結論:如果您希望在一個涉及動畫的函數之後來執行語句,請使用 callback 函數。
凡是由你設計卻由windows系統呼叫的函數,統稱為callback函數。某些API函數要求以callback作為你參數之一。
如SetTimer,LineDDA,EnumObjects。回呼函數是由開發人員按照一定的原形進行定義的函數(每個回呼函數都必須遵循這個原則來設計)
JS重要知識點總結-不完善