亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

前端學(xué)習(xí)日記(二)javascript基礎(chǔ):閉包是什么?

flybywind / 3394人閱讀

摘要:閉包在解釋閉包,指的是詞法表示包括不被計(jì)算的變量的函數(shù),也就是說,函數(shù)可以使用函數(shù)之外定義的變量。再把這個(gè)函數(shù)賦值給多個(gè)變量執(zhí)行時(shí),會(huì)依次創(chuàng)建多個(gè)閉包引入的變量副本,并且相互不會(huì)污染。

閉包在 ECMAScript 解釋

閉包,指的是詞法表示包括不被計(jì)算的變量的函數(shù),也就是說,函數(shù)可以使用函數(shù)之外定義的變量。
地址: https://www.w3cschool.cn/ecma...

下面說一下我自己對閉包的理解

什么樣的代碼叫做閉包

下面是一個(gè)簡單的閉包代碼

var name = "張三"

function sayName() {
  console.log(name);
}

// 執(zhí)行
sayName(); // 張三

個(gè)人理解:只要函數(shù)內(nèi)使用了不是函數(shù)內(nèi)定義的變量,這個(gè)函數(shù)就稱之為“閉包”。
因?yàn)樵诤瘮?shù)載入內(nèi)存時(shí),不清楚 name 正正的值,直到在執(zhí)行時(shí)才直到 name 具體的值。

一個(gè)復(fù)雜一些的例子

一個(gè)購物車的函數(shù),函數(shù)內(nèi)有 商品數(shù)量 的變量和 購買 的閉包

// 購物車
function shoppingCart() {
  var goodsNum = 0
  // 購買
  function buy() {
    goodsNum++
    console.log("當(dāng)前商品數(shù)量:" + goodsNum)
  }
  return buy
}

var buy = shoppingCart()

buy(); // 當(dāng)前商品數(shù)量: 1
buy(); // 當(dāng)前商品數(shù)量: 2
buy(); // 當(dāng)前商品數(shù)量: 3

執(zhí)行后發(fā)現(xiàn)程序會(huì)一直保留商品數(shù)量的變量,因?yàn)橐玫氖呛瘮?shù)外部的變量,不清楚變量具體的值,所以變量一直不會(huì)被釋放。這樣的話在做個(gè)例子。

通過下面的例子總結(jié)一下:下面這段代碼,buy這個(gè)函數(shù)是一個(gè)閉包,因?yàn)樗昧藘?nèi)部以外的變量。再把這個(gè)函數(shù)賦值給多個(gè)變量執(zhí)行時(shí),會(huì)依次創(chuàng)建多個(gè)閉包引入的變量副本,并且相互不會(huì)污染。

// 購物車
function shoppingCart() {
  var goodsNum = 0
  // 購買
  function buy() {
    goodsNum++
    console.log("當(dāng)前商品數(shù)量:" + goodsNum)
  }
  return buy
}

var tomBuy = shoppingCart()
var jackBuy = shoppingCart()

tomBuy(); // 當(dāng)前商品數(shù)量: 1
jackBuy(); // 當(dāng)前商品數(shù)量: 1

tomBuy(); // 當(dāng)前商品數(shù)量: 2
jackBuy(); // 當(dāng)前商品數(shù)量: 2

tomBuy(); // 當(dāng)前商品數(shù)量: 3
jackBuy(); // 當(dāng)前商品數(shù)量: 3
結(jié)

函數(shù)內(nèi)引用了外部的變量,這個(gè)函數(shù)稱為閉包

閉包內(nèi)引入的變量不會(huì)被釋放,會(huì)一直保留狀態(tài)

閉包賦給多個(gè)變量執(zhí)行,每個(gè)閉包內(nèi)的變量狀態(tài),相互不會(huì)污染

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/103281.html

相關(guān)文章

  • 我的前端面試日記(一)

    摘要:組件化編碼的一切都是基于組件的。屬性返回目標(biāo)節(jié)點(diǎn)的前一個(gè)兄弟節(jié)點(diǎn)。如果目標(biāo)節(jié)點(diǎn)前面沒有同屬于一個(gè)父節(jié)點(diǎn)的節(jié)點(diǎn),將返回屬性是一個(gè)只讀屬性。而當(dāng)變量離開環(huán)境時(shí),則將其標(biāo)記為離開環(huán)境。 第一次寫面試經(jīng)歷,雖然之前有過一些電話面試經(jīng)歷,但相對而言感覺此次的經(jīng)歷對自己收獲還是比較大,這里留下面經(jīng)當(dāng)作日記吧?。嬖嚂r(shí)間:2018-6-12 下午2:10;時(shí)長:50min;公司:*) 1、說說Rea...

    warkiz 評(píng)論0 收藏0
  • 我的前端面試日記(一)

    摘要:組件化編碼的一切都是基于組件的。屬性返回目標(biāo)節(jié)點(diǎn)的前一個(gè)兄弟節(jié)點(diǎn)。如果目標(biāo)節(jié)點(diǎn)前面沒有同屬于一個(gè)父節(jié)點(diǎn)的節(jié)點(diǎn),將返回屬性是一個(gè)只讀屬性。而當(dāng)變量離開環(huán)境時(shí),則將其標(biāo)記為離開環(huán)境。 第一次寫面試經(jīng)歷,雖然之前有過一些電話面試經(jīng)歷,但相對而言感覺此次的經(jīng)歷對自己收獲還是比較大,這里留下面經(jīng)當(dāng)作日記吧?。嬖嚂r(shí)間:2018-6-12 下午2:10;時(shí)長:50min;公司:*) 1、說說Rea...

    zhunjiee 評(píng)論0 收藏0
  • 前端學(xué)習(xí)日記(一)javascript基礎(chǔ):變量的作用域

    摘要:張三李四李四李四鏈?zhǔn)阶饔糜蚝瘮?shù)包含在函數(shù)中,這是函數(shù)所有局部變量對函數(shù)可見,但是相反是不行的。局部變量必須使用聲明,否則聲明的是全局變量。父級(jí)函數(shù)變量對所有子函數(shù)可見,子函數(shù)會(huì)一級(jí)一級(jí)向上尋找變量。 引言 一直從事服務(wù)端開發(fā)。由于近年來前端迅速發(fā)展,所以想入坑前端行列,雖然一直有接觸并開發(fā)前端相關(guān)的項(xiàng)目,但是想要做前端的工作決定系統(tǒng)的學(xué)習(xí)一下前端,就先從變量開始吧! 變量的作用域 在j...

    rollback 評(píng)論0 收藏0
  • 前端面試日記

    摘要:面試時(shí)間晚上時(shí)長小時(shí)分鐘公司,一面一簡單的介紹下自己介紹的真的很簡單。。。。。。二平時(shí)都是怎么學(xué)習(xí)前端的學(xué)習(xí)前端的話,我主要是以書籍為主然后是網(wǎng)站視頻博客文檔等學(xué)習(xí)理論,之后再通過代碼實(shí)踐。。。 大概是在6月11號(hào)在Boss直聘投的簡歷,6月12號(hào)中午收到電話約的面試時(shí)間,剛開始說是13號(hào)晚上7點(diǎn);后面可能時(shí)間有變,中午來了個(gè)電話說改到9-10點(diǎn);怎么說算是第一次面試自己目標(biāo)公司之一吧...

    huayeluoliuhen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<