成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

老生常談的Javascript作用域問題

開發(fā) 前端
在前端學(xué)習(xí)中,作用域這個問題一直被廣泛提起,什么是作用域,什么又是作用域鏈?在Javascript中,怎么去理解這些概念都是學(xué)好這門語言的關(guān)鍵,所以在學(xué)習(xí)前端開發(fā)的過程中,我需要也很有必要去學(xué)習(xí)和總結(jié)下javascript----作用域。

在前端學(xué)習(xí)中,作用域這個問題一直被廣泛提起,什么是作用域,什么又是作用域鏈?在Javascript中,怎么去理解這些概念都是學(xué)好這門語言的關(guān)鍵,所以在學(xué)習(xí)前端開發(fā)的過程中,我需要也很有必要去學(xué)習(xí)和總結(jié)下javascript----作用域。

[[141413]]

作用域并不難,但是去很少有人能稍微深入的解釋什么是作用域,知其然而不知其所以然顯然是遠遠不夠的,所以我們就深入淺出一下,

本片博文旨在深度去分析作用域,如有總結(jié)不到位之處,請讀者海涵并在評論區(qū)指出。

談到作用域就不得不談到一個名詞----執(zhí)行環(huán)境。什么叫執(zhí)行環(huán)境呢?

執(zhí)行環(huán)境是Javascript中最為重要的一個概念,它定義了變量或函數(shù)有權(quán)訪問其他數(shù)據(jù),決定了他們各自的行為。那么在每個執(zhí)行環(huán)境中都有一個叫做“變量對象”的object,執(zhí)行環(huán)境中的所有變量和函數(shù)都保存在這個對象中,這個object是無法被訪問到了,它只能在后臺被javascript解釋器訪問到。

瀏覽器在解析Javascript代碼的時候會為每個函數(shù)創(chuàng)建一個執(zhí)行環(huán)境,并在該執(zhí)行環(huán)境中生成一個變量對象來存儲變量和其內(nèi)部的函數(shù)。我們常常用到的window就是最外圍的執(zhí)行環(huán)境,也叫全局執(zhí)行環(huán)境,每個執(zhí)行環(huán)境的代碼執(zhí)行完成之后,該環(huán)境被銷毀,其中的變量對象也將被銷毀,而全局執(zhí)行環(huán)境只會在瀏覽器或網(wǎng)頁關(guān)閉的時候被銷毀,其他的執(zhí)行環(huán)境(或者內(nèi)部的)則為局部執(zhí)行環(huán)境(函數(shù))。

每個函數(shù)都有自己的執(zhí)行環(huán)境,那么當(dāng)代碼的執(zhí)行流進入到一個函數(shù)時,會將該執(zhí)行環(huán)境推入到一個環(huán)境棧中,在函數(shù)執(zhí)行完成之后又將其彈出,把對這個執(zhí)行環(huán)境的控制權(quán)交還給之前的執(zhí)行環(huán)境,當(dāng)代碼在一個執(zhí)行環(huán)境中執(zhí)行的時候,會將該環(huán)境中的變量對象連入到作用域鏈中。作用域鏈的作用就是保證對執(zhí)行環(huán)境中的有權(quán)訪問的變量和函數(shù)有序的訪問。說到這里,大家可能有些迷糊啦,那么就用點代碼和圖片來解釋下吧。

 

  1. //window scope 
  2.  
  3. var name0 = 'scope0'<p>console.log(name0)  //這里可以訪問到name0 
  4.  
  5. function scope1(){<p> 
  6.  
  7.     var name1 = 'scope1'<p>     console.log(name0,name1)  //這里可以訪問到name0,name1 
  8.  
  9.     function scope2(){ 
  10.  
  11.         var name2 = 'scope2'<p>         console.log(name0,name1,name2) //這里可以訪問到name0,name1,name2  
  12.  
  13.         function scope3(){ 
  14.  
  15.             var name3 = 'scope3'<p>              console.log(name0,name1,name2,name3) //這里可以訪問到name0,name1,name2,name3 
  16.  
  17.         } 
  18.  
  19.     } 
  20.  

 

當(dāng)JS解釋器去執(zhí)行這段代碼的時候,會生成4個執(zhí)行環(huán)境,分別是window,scope1,scope2,scope3。然后再執(zhí)行JS代碼的時候,會把每個執(zhí)行環(huán)境推入到執(zhí)行棧中,并生成變量對象給連接到作用域鏈中(從上到下),***生成的作用域鏈就為:

window→scope1→scope2→scope3

對于每個執(zhí)行環(huán)境中的變量對象來說,它的作用域鏈就是它本生加上它之前的變量對象(例如scope2的作用域鏈就是scope2和它之前的 scope1和window)。我們先前說道,每個執(zhí)行環(huán)境中的變量對象就是該執(zhí)行環(huán)境能夠訪問到了變量和函數(shù),個人理解為這個函數(shù)就是變量對象的作用域 鏈上其他的變量對象,那么就很好理解了,我們分析下上面代碼scope2的變量對象上有哪些東西,首先是參數(shù)數(shù)組(arguments,這里為[])還有 name2變量,然后是scope1的變量對象和全局變量對象。

說了這么多,提了那么多概念和名詞,我們好像只是說到了作用域鏈,但是并沒有說到作用域,這不是扯淡嘛!!!!好吧,我們現(xiàn)在就來談?wù)勛饔糜颉?/p>

還是先來扯下概念吧。是每個執(zhí)行環(huán)境可以通過作用域鏈向上訪問這個他的作用域鏈的其他執(zhí)行環(huán)境,但是不能向下訪問。這個就是作用域啦。。。

還是拿scope2函數(shù)來說吧,他可以訪問name2,name1,name0但是不能訪問name3,這個就是作用域的限定,他只能訪問到 scope1和window的執(zhí)行環(huán)境(還有它本身)。額,就這么一小段,我自己都醉了,但是個人覺得作用域就這點東西,關(guān)鍵的是在與對執(zhí)行環(huán)境、變量對 象和作用域鏈的理解。這些才是扎實的理解Javascript作用域的關(guān)鍵。

其實說到這里我感覺已經(jīng)差不多了,***次寫那么長的博文,文章水準(zhǔn)還有待提高,這篇文章主要是我在看《javascript高級程序設(shè)計》的看 到作用域這小節(jié),感覺作者寫了太好了,于是乎加上了一些個人的理解就寫了這篇博客。非常希望有對WEB開發(fā)有深刻理解的大大們提出批評和見解。

 
責(zé)任編輯:王雪燕 來源: 博客園
相關(guān)推薦

2015-06-25 10:46:23

數(shù)據(jù)中心節(jié)能

2012-02-13 09:46:56

數(shù)據(jù)中心耗能服務(wù)器虛擬化

2015-04-08 11:50:07

數(shù)據(jù)加密數(shù)據(jù)泄露

2022-03-08 15:01:48

負(fù)載均衡IP服務(wù)器

2014-07-25 13:34:08

2010-07-28 09:09:55

SQL

2011-08-18 14:47:06

2014-08-21 10:25:44

網(wǎng)絡(luò)安全兒童賬戶Google

2019-08-22 17:19:19

javascript去重數(shù)組

2010-03-29 09:04:51

VB.NET

2024-01-02 09:42:17

C#開發(fā)Windows消息循環(huán)機制

2017-04-11 13:54:49

HTTPURLHTML

2021-04-12 09:36:25

Redis擊穿穿透

2021-04-12 09:58:46

Redis數(shù)據(jù)庫代碼

2010-01-28 13:55:45

三層交換機

2020-01-14 10:37:38

存儲DateTime數(shù)值

2025-05-06 00:51:00

2022-06-02 15:19:31

架構(gòu)智能強化學(xué)習(xí)

2021-03-09 08:50:58

JavaScript前端作用域

2018-11-14 19:30:57

前端Javascript性能優(yōu)化
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 噜久寡妇噜噜久久寡妇 | 青青草av在线播放 | 在线高清免费观看视频 | 亚洲国产精品久久 | 精品欧美一区二区三区久久久 | 成人av一区二区三区 | 精品视频免费 | 一区二区视频免费观看 | 日本午夜视频 | 亚洲一区不卡 | 色视频欧美 | 国产精品一区二区av | 丁香综合 | 国产男女猛烈无遮掩视频免费网站 | 欧美不卡网站 | 国产在线观看网站 | 亚洲精品一区中文字幕乱码 | 91性高湖久久久久久久久_久久99 | 国产电影一区二区 | 免费一级黄色录像 | 男人阁久久 | 亚洲精品乱码久久久久久按摩观 | 97伦理 | 91影院在线观看 | 综合久久av | 精品欧美一区二区三区精品久久 | 国产精品久久久免费 | 欧美性猛交一区二区三区精品 | 91新视频 | 日本黄色一级片视频 | 99精品在线免费观看 | 国产精品美女久久久久久久网站 | 国产精品美女一区二区 | 中文字幕在线观看一区二区 | 91看片免费版 | 国产亚洲欧美另类一区二区三区 | 国产一区二区毛片 | 99r在线| 亚洲a网| 性国产丰满麻豆videosex | 日本天天操 |