JS重要知識點總結-不完善
###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重要知識點總結-不完善