JavaScript作用域與作用域鏈

一. 作用域

JavaScript作用域是什么虏等?

作用域指的就是變量存在的范圍

我們的作用域又分成了全局作用域和局部作用域兩塊

現(xiàn)在我們說一說怎么分別認(rèn)知:

局部變量是只能在函數(shù)內(nèi)部操作,而我們的局部作用域也是一樣的招刹。全局作用域在整個程序中一直存在氯材,所有地方都可以讀取。
局部作用域只能在函數(shù)內(nèi)部存在。

在大多數(shù)的語言中都是用花括號{ }來形成一個作用域

   {
       int a=2
    }

但是在我們JavaScript中{ }是不能形成作用域的埃元,需要靠函數(shù)來形成。

1. 我們看一段代碼:
function fn() {
    var a= '您好';
    console.log(a);
}//輸出 您好 在控制臺
fn()

在函數(shù)執(zhí)行后媚狰,輸出了a變量岛杀,a變量是我們定義在fn函數(shù)里的。

2. 再看一段代碼:
var b='您好';
function fn() {
  console.log(b);
}//輸出 您好 在控制臺
fn()

這段代碼并沒有在內(nèi)部定義變量崭孤,它為首先在fn函數(shù)中查找a這個變量类嗤,查找不到就會跳到自己的上層(全局)來查找到變量b糊肠。

二. 作用域鏈

//繼續(xù)看這個代碼
var b='您好';
function fn() {
  console.log(b);
}//輸出 您好 在控制臺
fn()

我們控制臺輸出b這個變量,需要首先找到var b遗锣;首先它會在自己的函數(shù)區(qū)域中查找货裹,如果找不到就會去往自己的上層。

//再看一個代碼
var a = 1
function fn1(){
  function fn2(){
    console.log(a)
  }
  function fn3(){
    var a = 4
    fn2()
  }
  var b= 2
  return fn3
}
var fn = fn1()
fn() //輸出1

這段代碼首先fn2 console.log(a) 變量a輸出到控制臺精偿,我們首先在fn2中查找變量a弧圆,沒有?我們往上層查找到fn1中沒有變量a? 那我們再往上到全局屬性后查找到var a = 1 ; 找到后輸出1笔咽。

總結(jié)一下:
  • 函數(shù)在執(zhí)行的過程中會先從自己的內(nèi)部查找變量
  • 如果找不到再從當(dāng)前創(chuàng)建函數(shù)的所在作用域去找搔预,以此往上
  • 如果查找到后就會立即停止
  • 如果在全局作用域還沒找到的話,就會報錯:ReferenceError: 某變量 is not defined





以上是我對作用域和作用域鏈的理解拓轻,有不足之處請多見諒

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末斯撮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扶叉,更是在濱河造成了極大的恐慌勿锅,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枣氧,死亡現(xiàn)場離奇詭異溢十,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)达吞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門张弛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人酪劫,你說我怎么就攤上這事吞鸭。” “怎么了覆糟?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵刻剥,是天一觀的道長。 經(jīng)常有香客問我滩字,道長造虏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任麦箍,我火速辦了婚禮漓藕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挟裂。我一直安慰自己享钞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布诀蓉。 她就那樣靜靜地躺著嫩与,像睡著了一般寝姿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上划滋,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天饵筑,我揣著相機(jī)與錄音,去河邊找鬼处坪。 笑死根资,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的同窘。 我是一名探鬼主播玄帕,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼想邦!你這毒婦竟也來了裤纹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤丧没,失蹤者是張志新(化名)和其女友劉穎鹰椒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呕童,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡漆际,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了夺饲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奸汇。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖往声,靈堂內(nèi)的尸體忽然破棺而出擂找,到底是詐尸還是另有隱情,我是刑警寧澤浩销,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布贯涎,位于F島的核電站,受9級特大地震影響撼嗓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜欢唾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一且警、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧礁遣,春花似錦斑芜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盈包。三九已至,卻和暖如春醇王,著一層夾襖步出監(jiān)牢的瞬間呢燥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工寓娩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叛氨,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓棘伴,卻偏偏與公主長得像寞埠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子焊夸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 作用域是JavaScript最重要的概念之一阱穗,想要學(xué)好JavaScript就需要理解JavaScript作用域和作...
    Castiel_Z閱讀 226評論 0 0
  • 作用域 什么是作用域饭冬? 作用域(execution context)定義了變量和函數(shù)有權(quán)訪問的其他數(shù)據(jù),決定了它們...
    liushaung閱讀 245評論 0 1
  • 蒂莫西·費(fèi)里斯 Tim Ferriss颇象,30歲伍伤。全球化3.0時代新新人類代言人,“每周工作4小時”觀念的首創(chuàng)者和成...
    績效教練敏吉閱讀 812評論 0 4
  • 聚伙是一款幫助用戶從尋找游玩地點(diǎn)遣钳,到阻止游玩的APP扰魂。 游玩內(nèi)容并不有平臺提供,而是接入了第三方的俱樂部蕴茴,有俱樂部...
    貴將閱讀 644評論 0 0