1. 程式人生 > >JS重要知識點總結-不完善

JS重要知識點總結-不完善

子函數 必須 his 代碼規範 重要 line java 全局 lba

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