1. 程式人生 > >關於閉包的理解 跨域的理解?

關於閉包的理解 跨域的理解?

關於閉包的理解: 1 定義和用法: 函式巢狀函式,子函式呼叫父函式的變數,如果返回的函式被外部執行,就產生了閉包. 2 函式外部呼叫函式內部的變數.

變數作用域:
全域性作用域跟區域性作用域
全域性作用域是那都可以使用,區域性作用域只能在一個區域內使用,外部不能訪問,函式內部使用變數的時候要使用var宣告,不然會成為全域性作用域

使用閉包的注意點:
濫用閉包,會造成記憶體洩漏,記憶體消耗大,造成網頁效能問題,建立的變數不會自動刪除,必須手動刪除

會改變父函式內部變數的值。所以,如果你把父函式當作物件(object)使用,把閉包當作它的公用方法(Public Method),把內部變數當作它的私有屬性(private value),這時一定要小心,不要隨便改變父函式內部變數的值。

跨域的理解? 跨域:傳送ajax請求url的協議 埠 域名 三者有一個不一致就會發生跨域 2、跨域請求資源的方法: (1)、porxy代理

定義和用法:proxy代理用於將請求傳送給後臺伺服器,通過伺服器來發送請求,然後將請求的結果傳遞給前端。

實現方法:通過nginx代理;

注意點:1、如果你代理的是https協議的請求,那麼你的proxy首先需要信任該證書(尤其是自定義證書)或者忽略證書檢查,否則你的請求無法成功。

(2)、CORS 【Cross-Origin Resource Sharing】

定義和用法:是現代瀏覽器支援跨域資源請求的一種最常用的方式。

使用方法:一般需要後端人員在處理請求資料的時候,新增允許跨域的相關操作。如下:

res.writeHead(200, { “Content-Type”: “text/html; charset=UTF-8”, “Access-Control-Allow-Origin”:‘http://localhost’, ‘Access-Control-Allow-Methods’: ‘GET, POST, OPTIONS’, ‘Access-Control-Allow-Headers’: ‘X-Requested-With, Content-Type’ }); (3)、jsonp

定義和用法:通過動態插入一個script標籤。瀏覽器對script的資源引用沒有同源限制,同時資源載入到頁面後會立即執行(沒有阻塞的情況下)。

特點:通過情況下,通過動態建立script來讀取他域的動態資源,獲取的資料一般為json格式。

例項如下:

缺點:

1、這種方式無法傳送post請求(這裡)

2、另外要確定jsonp的請求是否失敗並不容易,大多數框架的實現都是結合超時時間來判定。

談談垃圾回收機制方式及記憶體管理 回收機制方式 1、定義和用法:垃圾回收機制(GC:Garbage Collection),執行環境負責管理程式碼執行過程中使用的記憶體。

2、原理:垃圾收集器會定期(週期性)找出那些不在繼續使用的變數,然後釋放其記憶體。但是這個過程不是實時的,因為其開銷比較大,所以垃圾回收器會按照固定的時間間隔週期性的執行。

3、例項如下:

function fn1() { var obj = {name: ‘hanzichi’, age: 10}; } function fn2() { var obj = {name:‘hanzichi’, age: 10}; return obj; } var a = fn1(); var b = fn2(); fn1中定義的obj為區域性變數,而當呼叫結束後,出了fn1的環境,那麼該塊記憶體會被js引擎中的垃圾回收器自動釋放;在fn2被呼叫的過程中,返回的物件被全域性變數b所指向,所以該塊記憶體並不會被釋放。