今天在學習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 匿名函式呼...