无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

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

千鋒教育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的評論 (共 條)

分享到微博請遵守國家法律
高淳县| 贡山| 五河县| 杂多县| 惠东县| 隆尧县| 乐昌市| 萨嘎县| 延寿县| 常德市| 崇文区| 宁海县| 洛宁县| 泸溪县| 延安市| 房山区| 会昌县| 正阳县| 仁化县| 永靖县| 温泉县| 大厂| 轮台县| 乐亭县| 乡宁县| 湖州市| 旌德县| 肇州县| 杭锦后旗| 调兵山市| 庄河市| 黄大仙区| 岳普湖县| 芦溪县| 梨树县| 大兴区| 加查县| 湖南省| 崇义县| 武邑县| 苍溪县|