6

閉包

閉包的三大特點(diǎn)為:

1、函數(shù)嵌套函數(shù)

2、內(nèi)部函數(shù)可以訪問外部函數(shù)的變量

3、參數(shù)和變量不會被回收。

列:

function test(){

? ? var a=1;

? ? return function(){

? ? ? alert(a);

? ? }

? }

? var try=test();

? try();//彈出a的值

這個例子中,變量a在test方法外部是無法訪問的,但test方法里面,嵌套了一個匿名函數(shù),通過return返回,test作用域中的變量a,

可以在匿名函數(shù)中訪問。并且當(dāng)test方法執(zhí)行后,變量a所占內(nèi)存并不會釋放,以達(dá)到嵌套的函數(shù)還可以訪問的目的。

閉包作用

閉包的作用在于,可以通過閉包,設(shè)計私有變量及方法。

舉例來說:在java中創(chuàng)建perosn類,含有私有變量name。

public class Person{

? ? private String name='wy';

? ? public Person(val){

? ? ? name=val;

? ? }

? ? public void setName(val){

? ? ? name=val;

? ? }

? ? public String getName(){

? ? ? return name;

? ? }

}

全局

最外層函數(shù)定義的變量擁有全局作用域,即對任何內(nèi)部函數(shù)來說,都是可以訪問的

列:

var outerVar = "outer";

? ? ? function fn(){

? ? ? ? console.log(outerVar);

? ? ? }

? ? ? fn();//result:outer

局部

和全局作用域相反,局部作用域一般只在固定的代碼片段內(nèi)可訪問到,而對于函數(shù)外部是無法訪問的,最常見的例如函數(shù)內(nèi)部

列:

function fn(){

? ? ? ? var innerVar = "inner";

? ? ? }

? ? ? fn();

? ? ? console.log(innerVar);// ReferenceError: innerVar is not defined

作用域鏈

在JavaScript中,函數(shù)也是對象,實際上,JavaScript里一切都是對象。函數(shù)對象和其它對象一樣,擁有可以通過代碼訪問的屬性和一系列僅供JavaScript引擎訪問的內(nèi)部屬性。其中一個內(nèi)部屬性是[[Scope]],該內(nèi)部屬性包含了函數(shù)被創(chuàng)建的作用域中對象的集合,這個集合被稱為函數(shù)的作用域鏈,它決定了哪些數(shù)據(jù)能被函數(shù)訪問。

列:

當(dāng)一個函數(shù)創(chuàng)建后,它實際上保存一個作用域鏈,并且作用域鏈會被創(chuàng)建此函數(shù)的作用域中可訪問的數(shù)據(jù)對象填充。例如定義下面這樣一個函數(shù)

function func() {

? ? ? ? ? ? var num = 1;

? ? ? ? ? ? alert(num);

? ? ? ? }

? ? ? ? func();

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

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

  • Scala與Java的關(guān)系 Scala與Java的關(guān)系是非常緊密的??! 因為Scala是基于Java虛擬機(jī),也就是...
    燈火gg閱讀 3,607評論 1 24
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,246評論 0 38
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,803評論 1 45
  • YOYO成長記閱讀 340評論 0 3
  • 往事如夢,帶著淺淡襲人的清香,勾人心魂 我愿沉浸其中,忘卻世間嘈雜 白晝與黑夜輪替換,時間之輪無法阻擋 過往如煙云...
    loooking閱讀 369評論 0 0

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