JS中一道關於this和閉包的題

2022-09-18 17:09:14 字數 836 閱讀 8741

var num = 20;

var obj =

})(num)

};var fn = obj.fn();

fn();

obj.fn();

console.log(window.num, obj.num);

-> 65

-> 85

-> 240, 120

obj.fn()執行

執行this.num * = 3 將全域性下的num改為 60

執行 num+=15,將私有作用域下的num改為45,因為num是形參var不影響私有變數num

執行 num = 45,私有變數num 為45

因為私有作用域下的f2函式被外部引用,所以棧記憶體不銷毀

執行fn()

執行this.num * = 4,將全域性下的num更改為240

執行 num + = 20,將上級作用於下的私有變數num改為65

執行console.log(num) => 65

執行obj.fn()

執行this.num * = 4,將obj例項中的num改為120

執行num + = 20, 將上級作用於下的私有變數num改為85

執行console.log(num) => 85

執行console.log(window.num, obj.num) => 240, 120

一道傳遞閉包題

省選時孫耀峰大爺講過傳遞閉包相關問題,沒想到竟然遇上了。傳送門這題其實可以用孫耀峰大爺 中 不完全動態傳遞閉包 但利用題目中的一些性質會更好。我一開始的想法是,先將原圖scc縮點,對於每乙個操作時刻結束後,整個圖一定是dag套樹,用靜態傳遞閉包 動態樹相關理論即可。因為只有加點,所以可以倍增。但我們...

關於js的閉包

要理解上面的問題,首先要理解清楚幾個概念 來自 閉包裡的微觀世界 區別就是值型別變數是可以直接訪問棧 stack 中的值 接下來的內容就是關於閉包的微觀世界 function a return b var c a 函式a執行後返回函式b,並將函式b賦給c c 輸出 1 本來這個地方變數i是定義在函式...

C 中一道關於多執行緒的程式設計題

題目的意思是這樣的 讓兩個執行緒a和b將自己的id輪番寫入乙個檔案中,每個執行緒重複十次寫入後執行乙個 函式,說 i m ok 就這樣。我是一名qa,不是開發,出於興趣報考了公司的c 課程考試,多執行緒那些知識我也認真聽過課,但是總歸沒有機會實際運用過,所以一到真正要動手寫的時候也就基本等於不會了,...