THIS和閉包的綜合練習題

2021-10-10 07:25:14 字數 668 閱讀 7855

寫出下面**的輸出結果:

var x = 3,

obj = ;

obj.fn = (function ()

})();

var fn = obj.fn;

obj.fn(6);

fn(4);

console.log(obj.x, x);

此題的**:

全域性**執行形成乙個全域性上下文ec(g),有乙個全域性變數物件vo(g),建立乙個值3,建立變數x兩者關聯;開闢乙個堆記憶體0x001,有乙個16進製制位址,建立乙個變數名,兩者關聯。

obj.fn賦值乙個自執行函式的返回值,首先開闢乙個函式堆記憶體0x002,函式執行開闢乙個棧記憶體ec(an),此函式執行時返回乙個函式的堆0x003,將此函式堆賦值給此上下文以外的變數obj.fn,所以此自執行函式執行形成的堆記憶體不被釋放,形成閉包,將自己私有上下文中的內容保護和儲存起來。

【var fn = obj.fn;】,將自執行函式返回的函式堆0x003賦值給全域性變數fn。

【obj.fn(6);】執行主體是obj,即函式執行時的this指向obj

【fn(4);】執行主體是window。

閉包練習題

var data for var i 0 i 3 i i data 0 data 1 data 2 答案 0 1 2function fun n,o var a fun 0 這裡第一次呼叫fun時輸出undefined,返回了乙個物件給a,n 0 a.fun 1 這裡首先呼叫了a物件的屬相fun,屬...

JS閉包 練習題

牛客網關於閉包的一道題的解析 實現函式 makeclosures,呼叫之後滿足如下條件 1 返回乙個函式陣列 result,長度與 arr 相同 2 執行 result 中第 i 個函式,即 resulti,結果與 fn arr i 相同 示例1 輸入 1,2,3 function x 輸出 4 v...

Sed綜合練習題

1.將nginx配置檔案裡的第乙個server塊裡的listen的埠80 修改為8080 sed i r s listen.80 18080 p nginx.conf2.在nginx的配置檔案裡新增乙個server塊配置 server error page 404 404.html location...