java面試之閉包(closure)

2021-09-07 15:51:38 字數 581 閱讀 4463

今天在學習openresty的時候回顧了下閉包這個問題,感覺很久沒有深入的了解這塊的內容的,只是之前js的時候學習過閉包,突然一問,感覺不記得閉包了:

看了乙個比較有趣的答案:

閉包,顧名思義,就是把饅頭變成包子~

饅頭全是麵粉,包上餡就成了包子

包子是帶餡的饅頭

閉包是自帶執行環境的函式

發哥是自帶背景**的男人~

有童鞋不理解「自帶執行環境」的含義~

再舉例說一次吧~

碼農們都吃過速食麵吧~

它和普通麵條有什麼區別呢?

就是 自帶調味包 。

調味包就是速食麵的烹飪環境。

它簡化了煮麵條的流程。讓使用者不必練就廚藝也能吃上美味的內牛滿面。

函式式程式設計的閉包,就是函式的調味包。

方便使用者呼叫函式。不必為了維護繁雜的外部狀態而煩惱。

例如python,就把閉包玩出了很多花樣:

靜態私有變數啦~

偏函式啦~

單參化~

裝飾器~

……當你在用這些功能的時候,其實就是在吃別人設定好調味包的「速食麵」。

繼承閉包 面試重點

牢記 區域性變數執行完就銷毀,全域性變數等頁面關閉它才銷毀 開闢乙個儲存空間 把函式體內的 一模一樣的放在這個空間內 不解析變數 把儲存空間的位址給函式名 按照函式名的位址找到函式的儲存空間 形參賦值 預解析將函式儲存空間中的 拿出來執行 才解析變數 按照函式名的位址找到函式的儲存空間 形參賦值 預...

面試題 閉包問題

function console.log y console.log x console.log y 輸出結果為 1 console.log x 輸出結果為 error,直接報錯 解析宣告變數 從右向左賦值,可分解為 y 1 var x y 可見 y 為全域性變數,x為閉包函式內的區域性變數,在co...

JS閉包 面試題

function setobj p p.name bb var p setobj p console.log p 程式的執行結果是aa 匿名函式的this一般是指向window var number 2 var obj var fn1 obj.fn1 console.log number 匿名函式呼...