最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

千鋒教育JavaScript全套視頻教程(10天學會Js,前端javascrip

2023-07-21 09:16 作者:bili_18197036137  | 我要投稿

js閉包的理解

什么是閉包?

閉包(closure):是指函數與其周圍的狀態(tài)(lexical environment 詞法環(huán)境)的組合。通俗的理解是一個內部函數引用了外部函數的變量,此時外部函數就形成了一個閉包。下面就是一個簡單閉包的寫法。

function box() {

????????var a = 1

????????return function () {

??????????console.log(a);

??????????return a

????????}

??????}

??????let resFn = box()

??????resFn()

?閉包的寫法

?根據上面的簡單案列,我們對閉包已經有了初步的認識。閉包的寫法必須具有以下兩點。

1.函數嵌套體。

2.內部函數可以訪問外部函數的變量

閉包的原理

1.垃圾回收機制

??垃圾回收機制就是瀏覽器內存回收機制的一種算法。垃圾回收機制就是不停歇地查找那些不在使用的局部變量,并釋放掉它所指向的內存。最早使用的垃圾回收機制的算法是 ——引用計數器算法,因為這種算法存在缺點,容易造成內存泄漏。目前已經基本不使用了。目前使用的垃圾回收機制是——標記清除法:它標記能被全局所使用的變量。被標記的變量不會被清除。

作用域鏈

?內部函數使用變量的時候會先在自身去查找,自身沒有的話就去父級作用域去查找。

閉包的特點

1.閉包的優(yōu)點

(1)局部變量常駐內存,像全局變量一樣常駐內存,不會污染全局命名空間。

(2)產生私有變量(內部函數調用外部函數的變量,此時這個變量就會變成內部函數的私有變 量)

2.閉包的缺點

(1)使用不當的話容易造成內存泄露(解決辦法就是我們在不使用的時候手動賦值為null)。

(2)內存占用比較大,浪費內存。

經典閉包

?function fn() {

??????????let a = 1

??????????return function () {

????????????a++

????????????return a

??????????}

????????}

????????let newFn = fn()

????????console.log(newFn());

????????console.log(newFn());

????????console.log(newFn());

千鋒教育JavaScript全套視頻教程(10天學會Js,前端javascrip的評論 (共 條)

分享到微博請遵守國家法律
东阳市| 巫山县| 华容县| 丹棱县| 昭通市| 长寿区| 清丰县| 高密市| 巴彦县| 教育| 马龙县| 全州县| 会同县| 漳州市| 高邮市| 张北县| 昆明市| 邓州市| 抚顺县| 台南市| 宜宾市| 武功县| 宣城市| 二连浩特市| 嘉善县| 梁河县| 东山县| 石泉县| 通州市| 三明市| 汉中市| 淳安县| 会理县| 慈溪市| 长汀县| 蒙城县| 乌什县| 三原县| 都匀市| 祥云县| 大新县|