js閉包函式 獲取區域性變數時

2021-10-23 02:59:41 字數 765 閱讀 7705

參考

閉包是能夠讀取其他函式內部變數的函式。閉包就是將函式內部和函式外部連線起來的一座橋梁。

函式內部可以直接讀取全域性變數。在函式外部無法讀取函式內的區域性變數。

functionf1(

)f1()

;alert

(n);

// 999

子函式可以一層一層讀取到父元素的變數,反之不行。

假如需要得到函式的區域性變數,正常操作是:在函式的內部再定義乙個函式,該函式稱之為閉包。

閉包的作用:1.讀取區域性變數;2.讓區域性變數的值始終儲存在記憶體中。

子函式f2可以讀取父函式f1中的區域性變數,那麼只要把f2作為返回值,就可以在f1外部讀取它的內部變數!

functionf1(

)return f2;

}var result=f1(

);result()

;// 999

1)由於閉包會使得函式中的變數都被儲存在記憶體中,記憶體消耗很大,所以不能濫用閉包,否則會造成網頁的效能問題,在ie中可能導致記憶體洩露。解決方法是,在退出函式之前,將不使用的區域性變數全部刪除。

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

---------日積跬步,以致千里。

js 區域性變數 全域性變數 閉包

什麼是變數?變數的命名規範 1 變數名必須以字母.下標符號 或者 開頭 2 變數名的長度不得超過255個字元 3 變數名中不可以使用空格,並且開頭不得以數字開頭 4 不用使用指令碼語言中保留的關鍵字及保留符號作為變數名 5 變數名是區分大小寫的,var a 1和var a 1 指在程式中只在特定過程...

Python閉包區域性變數問題

最近開始學習python,一直覺得python定義變數前沒有命令很難受,果然今天在練習閉包時遇到了這個問題。先看看出問題的 def createcounter n 0 def counter n n 1 return n return counter這裡會報錯 unboundlocalerror l...

閉包 全域性變數與區域性變數

報錯 unboundlocalerror local variable t referenced before assignment 在 python 中,如果乙個函式使用了和全域性變數相同的名字且改變了該變數的值,那麼該變數就會變成區域性變數,那麼就會造成在函式中我們沒有進行定義就引用了,所以會報...