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

資訊專欄INFORMATION COLUMN

Javascript中的作用域

AlphaWatch / 3029人閱讀

摘要:作用域的概念所謂作用域,作用就是指讀,寫等操作,而域便是指空間,范圍等中的域有是全局的域,相應地里面的變量就是全局變量,函數就是全局函數如果有多個包住的域的話,函數會自上而下執(zhí)行,比如寫了兩的時候便會從上到下先執(zhí)行第一個再執(zhí)行第二個的代碼比

作用 域的概念

所謂作用域,作用就是指讀,寫等操作,而域便是指空間,范圍等

js中的域有
1.script
script是全局的域,相應地里面的變量就是全局變量,函數就是全局函數,如果有多個script包住的域的話,
函數會自上而下執(zhí)行,比如寫了兩的時候便會從上到下先執(zhí)行第一個script再執(zhí)行第二個
script的代碼

比如下面這個例子




//會報undefined的錯,在每一個域中都會完成兩步操作,預解析和逐行解讀代碼,在第一個域中,預解析完了之
//后倉庫(比喻,后文會提到)里并沒有a這個變量,所以執(zhí)行alert的時候會報錯





// 可以正常工作,因為在第一個預解析的過程中,變量a已經被存入了倉庫中,在第二個script域里面并不會清空
//之前倉庫里的變量
2.函數
函數內部也有一個域,域的執(zhí)行方向為由里到外,比如在函數里面alert(a),如果在里面沒有定義這個a的話,
那么它便會向外一級去尋找這個變量a,一層一層,直到找到為止,如果找不到就會報錯

談到這里,大家對上面最不明白的應該就是那個倉庫了,下面來詳細談談

首先要了解得應該是下面這個

瀏覽器中JS解析器的工作方式

js解析器并不會在一開始執(zhí)行所有代碼,而是會先進行一個預解析,預解析的時候只是根據一些關鍵字來找到一些東西放到“倉庫”里面去,如果是var 變量,不會管變量是一個什么值,直接先給它賦一個值undefined,如果是一個函數function,會把整個代碼塊賦值給它(這個代碼塊并不會執(zhí)行),而如果是一個參數的話,相當于var 參數(參考變量);

1. 預解析,“找一些東西,根據一些關鍵字,var function 參數”

???在找的過程中

所有的變量,在正式運行代碼之前,都被賦了一個值,undefine

所有的函數,在正式運行之前,都是整個函數塊

所有的參數,(a)相當于(var a;)

但是如果因為開發(fā)者的不留心,這些變量名和函數名互相之間沖突了,倉庫里的東西會怎么樣呢,

答案是遇到重名的,只留一個,函數和變量重名了,留函數,同一級別的重名了,留后面那一個
   
2. 逐行解讀代碼

當預解析完成之后,便相當于開始正式工作了,之前的相當于熱身

解讀代碼的過程中,表達式是可以改變“倉庫”里的值的,而函數調用也就是相當于在函數里面那個域里面再執(zhí)行預解析和逐行解讀代碼的操作

表達式 = + - * / % ++ -- ! Number()...... 表達式可以去改預解析中的值

函數調用
???1.預解析
???2.逐行解讀代碼

有時間放幾個小例子來幫助更好的理解,先寫到這吧。

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

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/80258.html

相關文章

  • 大話javascript 1期:作用作用

    摘要:全局作用域局部作用域局部作用域全局作用域局部作用域塊語句沒有塊級作用域塊級聲明包括和,以及和循環(huán),和函數不同,它們不會創(chuàng)建新的作用域。局部作用域只在該函數調用執(zhí)行期間存在。 一、什么是作用域? 作用域是你的代碼在運行時,各個變量、函數和對象的可訪問性。(可產生作用的區(qū)域) 二、JavaScript中的作用域 在 JavaScript 中有兩種作用域 全局作用域 局部作用域 當變量定...

    NicolasHe 評論0 收藏0
  • 還擔心面試官問閉包?

    摘要:一言以蔽之,閉包,你就得掌握。當函數記住并訪問所在的詞法作用域,閉包就產生了。所以閉包才會得以實現(xiàn)。從技術上講,這就是閉包。執(zhí)行后,他的內部作用域并不會消失,函數依然保持有作用域的閉包。 網上總結閉包的文章已經爛大街了,不敢說筆者這篇文章多么多么xxx,只是個人理解總結。各位看官瞅瞅就好,大神還希望多多指正。此篇文章總結與《JavaScript忍者秘籍》 《你不知道的JavaScri...

    tinyq 評論0 收藏0
  • 十分鐘快速了解《你不知道的 JavaScript》(上卷)

    摘要:最近剛剛看完了你不知道的上卷,對有了更進一步的了解。你不知道的上卷由兩部分組成,第一部分是作用域和閉包,第二部分是和對象原型。附錄詞法這一章并沒有說明機制,只是介紹了中的箭頭函數引入的行為詞法。第章混合對象類類理論類的機制類的繼承混入。 最近剛剛看完了《你不知道的 JavaScript》上卷,對 JavaScript 有了更進一步的了解。 《你不知道的 JavaScript》上卷由兩部...

    趙春朋 評論0 收藏0
  • 淺談對JavaScript閉包的理解

    摘要:關于循環(huán)和閉包當循環(huán)和閉包結合在一起時,經常會產生讓初學者覺得匪夷所思的問題。閉包是一把雙刃劍是比較難以理解和掌握的部分,它十分強大,卻也有很大的缺陷,如何使用它完全取決于你自己。 在談閉包之前,我們首先要了解幾個概念: 什么是函數表達式? 與函數聲明有何不同? JavaScript查找標識符的機制 JavaScript的作用域是詞法作用域 JavaScript的垃圾回收機制 先來...

    missonce 評論0 收藏0
  • JavaScript優(yōu)化之管理作用

    摘要:當被創(chuàng)建時,它的作用域鏈初始化為當前運行函數的屬性中的對象,這些值按照他們出現(xiàn)在函數中的順序,被復制到執(zhí)行環(huán)境的作用域鏈中。然后這個對象被推入作用域鏈最前端。 在計算機科學中,數據存儲的位置關系到代碼執(zhí)行過程中數據的檢索速度,有一個經典的問題即為:通過改變數據的存儲位置來獲得最佳的讀寫性能。 Javascript中四種基本的數據存儲位置 字面量字面量只代表自身,不存儲在特定的位置。...

    fox_soyoung 評論0 收藏0
  • 這一次,我們換種姿勢學習 javascript

    摘要:操作符或調用函數時傳入參數的操作都會導致關聯(lián)作用域的賦值操作。此外可以使用和來設置對象及其屬性的不可變性級別。忽視這一點會導致許多問題。使用調用函數時會把新對象的屬性關聯(lián)到其他對象。 前言 《你不知道的 javascript》是一個前端學習必讀的系列,讓不求甚解的JavaScript開發(fā)者迎難而上,深入語言內部,弄清楚JavaScript每一個零部件的用途。本書介紹了該系列的兩個主題:...

    zone 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<