Js中的閉包

閉包 是前端面試必問的一個(gè)知識(shí)點(diǎn)

one: 什么是閉包

two: 閉包的作用是什么

一、變量的作用域

全局變量 局部變量

在Js中函數(shù)內(nèi)部可以直接讀取 全局變量,而函數(shù)外部 自然無法讀取 函數(shù)內(nèi)部的局部變量

栗子1:

var name = 'itxing'; ?// name為全局變量

function getName() {

? ? console.log(name)

}

getName() ?//itxing

栗子2:

function getName() {

? ? var name = 'itxing'; ?// ?局部變量

}

console.log(name) ?//undefined

二、什么是閉包

MDN對(duì)其的理解

閉包是一個(gè)函數(shù),特指那些可以訪問獨(dú)立變量的函數(shù)(這種獨(dú)立變量在本地使用,但是卻定義在一個(gè)封閉的作用域),換句話說這類函數(shù)能夠記憶創(chuàng)建它們時(shí)的環(huán)境(很難理解)

栗子3:

function Person() {

? ? var name = 'itxing';

? ? function getName() {

? ? ? ? console.log(name)

? ? }

? ? return getName

}

var man = Person();

man() ?// ?'itxing'

函數(shù)getName能夠訪問函數(shù)Person內(nèi)部的變量,那么函數(shù)getName變量name這整個(gè)環(huán)境就可以稱之為閉包。在這里man就成了一個(gè)閉包,這個(gè)閉包由getName()和字符串“itxing”組成。

閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)

三、閉包的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):延長(zhǎng)外部函數(shù)局部變量的生命周期

缺點(diǎn):容易造成內(nèi)存泄漏

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 閉包 是前端開發(fā)者面試必問的一個(gè)知識(shí)點(diǎn)。1、什么是閉包?2、閉包的作用是什么? 一、變量的作用域 你要學(xué)習(xí)和理解閉...
    anonymous66閱讀 1,304評(píng)論 15 56
  • 今天研究了一波js中的閉包,分享一下自己的理解。 一、變量的作用域 要理解閉包,首先必須理解Javascript特...
    阿布_0caf閱讀 279評(píng)論 0 2
  • 定義一個(gè)函數(shù) function fn(a,b,...rest){var arr;...function fn2()...
    落木兮兮閱讀 1,190評(píng)論 0 1
  • 怎樣才是我們對(duì)待弱者最好的態(tài)度呢?施已看得見的關(guān)愛遠(yuǎn)不及平常以待,因?yàn)樽钇匠5膽B(tài)度往往才最溫柔。 最近在微博上看了...
    麼子瞻閱讀 250評(píng)論 0 0
  • 我們?cè)谌松牡缆飞蠣?zhēng)先恐后,事務(wù)纏身,忙碌而疲憊,總感覺一天忙24小時(shí)都不夠,卻仍然感受不到生活的改變,仍然...
    青Iris閱讀 218評(píng)論 0 1

友情鏈接更多精彩內(nèi)容