真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JavaScript中的閉包原理是什么-創(chuàng)新互聯(lián)

小編給大家分享一下JavaScript中的閉包原理是什么,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

創(chuàng)新互聯(lián)專注于遠(yuǎn)安企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),購(gòu)物商城網(wǎng)站建設(shè)。遠(yuǎn)安網(wǎng)站建設(shè)公司,為遠(yuǎn)安等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

要了解清楚js中的閉包制機(jī),那么得先了解全局執(zhí)行環(huán)境、塊級(jí)執(zhí)行環(huán)境、函數(shù)執(zhí)行環(huán)境、變量對(duì)象、環(huán)境棧、作用域鏈、摧毀執(zhí)行環(huán)境。

全局執(zhí)行環(huán)境

全局執(zhí)行環(huán)境指的是最外層的執(zhí)行環(huán)境。在web中全局執(zhí)行環(huán)境被認(rèn)為window對(duì)象,所以你在全局環(huán)境中創(chuàng)建的變量與函數(shù)都是對(duì)象的屬性和方法。

函數(shù)執(zhí)行環(huán)境

函數(shù)執(zhí)行環(huán)境指的是函數(shù)體。

塊級(jí)執(zhí)行環(huán)境

塊級(jí)執(zhí)行環(huán)境指的是塊級(jí)定義區(qū)域。

'use strict';
// 全局執(zhí)行環(huán)境
// .....
{
    // 塊級(jí)執(zhí)行環(huán)境
    // 代碼 ....
}

function func() {
   // 函數(shù)執(zhí)行環(huán)境
   //... 
}

變量對(duì)象

每一個(gè)執(zhí)行環(huán)境最有一個(gè)與之關(guān)聯(lián)的變量對(duì)象,變量對(duì)象中存儲(chǔ)當(dāng)前環(huán)境中定義的變量與函數(shù)。在使用變量或函數(shù)時(shí),都是在個(gè)變量對(duì)象上去尋找成員的。這個(gè)對(duì)象是無(wú)法訪問的,但是你可以在作用域鏈[scope]中查看到所定義的成員(如果沒有使用的話可能無(wú)法看到,這和優(yōu)化有關(guān))。

環(huán)境棧

每個(gè)函數(shù)或塊都有自己的執(zhí)行環(huán)境。當(dāng)執(zhí)行流進(jìn)入一個(gè)函數(shù)時(shí),函數(shù)的環(huán)境就會(huì)被推入“環(huán)境棧”中。函數(shù)執(zhí)行完后,棧將其彈出并銷毀變量對(duì)象,然后把控制權(quán)返回在給之前的執(zhí)行環(huán)境。如果內(nèi)執(zhí)行環(huán)境的變量對(duì)象,被外部執(zhí)行環(huán)境引用,那么內(nèi)部環(huán)境變量對(duì)象就無(wú)法被銷毀(如:閉包)。

作用域鏈

作用域鏈?zhǔn)且粋€(gè)列表,存儲(chǔ)著與執(zhí)行環(huán)境相關(guān)的變量對(duì)象,通過【scope】屬性可查看變量對(duì)象列表。

關(guān)系圖

JavaScript中的閉包原理是什么

實(shí)例講解


// 例子1:常見的函數(shù)嵌套


'use strict';
function a() {
    let x = 2;
    return function() {
        return x;
    }
}
let func = a(); // 返回a函數(shù)體內(nèi)的 匿名函數(shù)
console.log(func()); // 在全局執(zhí)行環(huán)境中,訪問a函數(shù)內(nèi)部變量。 如果是非閉包函數(shù),那么執(zhí)行完后

我們來看一下,a函數(shù)體內(nèi)匿名函數(shù)的作用域鏈。

JavaScript中的閉包原理是什么

[Scopes] : 是當(dāng)前匿名函數(shù)的作用域鏈。

索引為 0 的:是a函數(shù)的執(zhí)行環(huán)境的變量對(duì)象, x 表示 變量對(duì)象中的。

索引為 1 的:全局執(zhí)行環(huán)境變量對(duì)象。

// 例子2:訪問塊內(nèi)部變量

1:返回塊級(jí)內(nèi)容函數(shù) 實(shí)現(xiàn)在全局執(zhí)行環(huán)境中訪問塊級(jí)內(nèi)容變量。

'use strict';
let func = null;
{
    let x = "你好";
    func = function () {
        return x;
    }
}
// 返回塊級(jí)內(nèi)容函數(shù) 實(shí)現(xiàn)在全局執(zhí)行環(huán)境中訪問塊級(jí)內(nèi)容變量。
console.log(func());

作用域鏈圖:

JavaScript中的閉包原理是什么

看完了這篇文章,相信你對(duì)JavaScript中的閉包原理是什么有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)站標(biāo)題:JavaScript中的閉包原理是什么-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://weahome.cn/article/jeogh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部