成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

JavaScript作用域分為哪兩類

JavaScript作用域分為全局作用域和局部作用域兩類。變量在函數外定義為全局變量,全局變量有全局作用域,即網頁中的所有腳本和函數均可使用;變量在函數內部聲明為局部作用域,局部作用域一般只在固定的代碼片段(例函數)內部可訪問到。

JavaScript作用域分為哪兩類

本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

變量的作用域(scope),指的是變量在腳本代碼中的可讀、寫的有效范圍,也就是腳本代碼中可以使用這個變量的區域。

變量的作用域主要分為全局作用域、局部作用域(也稱函數作用域)兩種。

相應作用域的變量分別稱為全局變量、局部變量。全局變量聲明在所有函數之外;局部變量是在函數體內聲明的變量或者是函數的命名參數。

全局作用域(Global Scope)

變量在函數外定義為全局變量,全局變量有全局作用域:網頁中的所有腳本和函數均可使用。

在代碼中任何地方都能訪問到的對象擁有全局作用域,一般來說以下幾種情形擁有全局作用域:

 1、最外層函數和在最外層函數外面定義的變量擁有全局作用域

 2、所有末定義直接賦值的變量自動聲明為擁有全局作用域

 3、所有window對象的屬性擁有全局作用域

一般情況下,window對象的內置屬性都擁有全局作用域,例如window.name、window.location、window.top等等。

局部作用域(Local Scope)

變量在函數內部聲明為局部作用域。

和全局作用域相反,局部作用域一般只在固定的代碼片段(例:函數)內部可訪問到,最常見的例如函數內部,所有在一些地方也會看到有人把這種作用域稱為函數作用域。

總之呢,當JS解析器執行時,首先就會在執行環境里構建一個全局對象,我們定義的全局屬性就是做為該對象的屬性讀取,在頂層代碼中我們使用this關鍵字和window對象都可以訪問到它。

而函數體中的局部變量只在函數執行時生成的調用對象中存在,函數執行完畢時局部變量即刻銷毀。

因此在程序設計中我們需要考慮如何合理聲明變量,這樣既減小了不必要的內存開銷,同時能很大程度地避免變量重復定義而覆蓋先前定義的變量所造成的Debug麻煩。

說明:

變量的作用域跟聲明方式有很密切的關系。使用 var 聲明的變量的作用域有全局作用域和函數作用域;使用 let 和 const 聲明的變量有全局作用域、局部作用域。

注意:嚴格意義的全局變量都屬于 window 對象的屬性,但 let 和 const 聲明的變量并不屬于 window 對象,所以它們并不是嚴格意義上的全局變量,在此僅僅從它們的作用域這個角度來說它們是全局變量的。

由于 var 支持變量提升,所以 var 變量的全局作用域是對整個頁面的腳本代碼有效;而 let 和 const 不支持變量提升,所以 let 和 const 變量的全局作用域指的是從聲明語句開始到整個頁面的腳本代碼結束之間的整個區域,而聲明語句之前的區域是沒有效的。

同樣,因為 var 支持變量提升,而 let 和 const 不支持變量提升,所以使用 var 聲明的局部變量在整個函數中有效,而使用 let 和 const 聲明的局部變量從聲明語句開始到函數結束之間的區域有效。需要注意的是,如果局部變量和全局變量同名,則在函數作用域中,局部變量會履蓋全局變量,即在函數體中起作用的是局部變量;在函數體外,全局變量起作用,局部變量無效,此時引用局部變量將出現語法錯誤。

示例:變量的作用域

     var v1 = "JavaScript"; //全局變量      let v2 = "JScript"; //全局變量      let v3 = "Script"; //全局變量      scopeTest();    //調用函數      function scopeTest(){          var lv = "aaa"; //局部變量          var v1 = "bbb"; //局部變量          let v2 = "ccc"; //局部變量           console.log("函數體內輸出的lv = " + lv); //aaa          console.log("函數體內輸出的v1 = " + v1); //bbb          console.log("函數體內輸出的v2 = " + v2); //ccc          console.log("函數體內輸出的v3 = " + v3); //Script          //v4為全局變量,賦值在后面,因而值為undefined          console.log("函數體內輸出的v4 = " + v4);      }      var v4 = "VBScript"; //全局變量      console.log("函數體外輸出的lv = " + lv); //① 報ReferenceError錯誤      console.log("函數體外輸出的v1 = " + v1); //JavaScript      console.log("函數體外輸出的v2 = " + v2); //JScript      console.log("函數體外輸出的v3 = " + v3); //Script      console.log("函數體外輸出的v3 = " + v4); //VBScript

上述腳本代碼分別聲明了 4 個全局變量、3 個局部變量。在 scopeTest 函數體外,變量 v1、v2、v3 和 v4 為全局變量;在 scopeTest 函數體內,lv、v2是全局變量。

我們看到,局部變量 v1 和 v2 與全局變量 v1 和 v2 同名,在 scopeTest 函數體內,局部變量 v1 和 v2 有效,因而在函數體這 2 個變量的輸出結果分別為“bbb”和“ccc”;在函數體外,全局變量 v1 和 v2 有效,因而在函數體外,這 2 個變量的輸出結果分別為“JavaScript”和“JScript”。

另外,全局變量 v3 和 v4 在函數體中沒有被覆蓋,因而輸出的是全局變量的值,所以 v3 在函數體內和體外的輸出結果都為“Script”,而 v4 變量的賦值在函數調用的后面,因而在函數體中的 v4 輸出結果為“undefined”,而在函數體外的輸出是在聲明之后,所以結果為“VBScript”。lv 是局部變量,因而在函數體外訪問會報“ReferenceError”錯誤。

上述代碼在 Chrome 瀏覽器中運行后,打開瀏覽器的控制臺,可以看到下圖所示的輸出結果

JavaScript作用域分為哪兩類

上圖 所示報第 18 行代碼(即示例 ① 處注釋的代碼)中的 lv 沒有定義的引用錯誤,這是因為 lv 變量為局部變量,離開函數后無效。將這行代碼注釋后再運行,此時打開瀏覽器控制臺可看到下圖所示結果

JavaScript作用域分為哪兩類

【推薦學習:javascript高級教程】

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久久久亚洲AV无码网站| 男人桶女人18禁止网站| 久久久久亚州AⅤ无码专区首| 久久婷婷五月综合国产| 麻豆蜜桃AV蜜臀AV色欲AV| 嫩草研究院久久久精品| 日本久久久久久久久久加勒比| 色天天躁夜夜躁天干天干| 无码人妻AⅤ一区二区三区用会员| 亚洲AV电影天堂男人的天堂| 亚洲欧美日韩国产精品一区二区 | 国产精品亚洲А∨天堂免| 含羞草亚洲AV无码久久精品| 久久九九久精品国产综合一千收藏 | HENNESSY女RAPPER| 国产白嫩护士被弄高潮| 国语对白露脸XXXXXX| 久久无码成人影片| 人妻内射一区二区在线视频| 色欲午夜无码久久久久久| 性XXXX视频播放免费| 夜夜高潮天天爽欧美| Chinese老女人老熟妇HD| 国产成人精品人人2020视频| 激情射精爆插热吻无码视频| 男男腐啪GⅤ小受无套进入| 色婷婷粉嫩AV精品综合在线 | 国语对白做受XXXXX在线中国| 久久久亚洲熟妇熟女ⅩXXXH| 人妻丰满熟妇AV无码区不卡| 无码人妻AⅤ一区二区三区| 亚洲综合欧美在线一区在线播放| OM老熟女DHXⅩXXX69| 国产手机在线ΑⅤ片无码观看| 久久人人爽人人爽AV片| 人人澡人人妻人人爽人人蜜桃麻豆| 无码少妇丰满熟妇一区二区| 亚洲综合无码久久精品综合| 成年免费A级毛片免费看丶| 狠狠爱天天综合色欲网| 欧美高清熟妇啪啪内射不卡自拍| 无码A级毛片免费视频内谢| 用舌头去添高潮无码视频 | 97超碰人人人人人人少妇| 国产97成人亚洲综合在线| 久久久久国产精品人妻AⅤ蜜臀 | 免费十大软件大全下载安装| 天天AV天天翘天天综合网色鬼| 亚洲熟妇色ⅩXXXX日本| 成在人线AV无码免费看网站直播| 精产国品一二三产区区别是什么| 破了亲妺妺的处免费视频国产| 亚洲AⅤ中文无码字幕色本草| 337P日本欧洲亚洲大胆裸体艺| 国产精品青青在线观看爽香蕉| 麻豆XXXXXX在线观看| 无码国产精品一区二区免费式芒果| 曰韩无码A级成人毛片| 国产精品VA尤物在线观看| 麻豆三级电影无码| 无码人妻丰满熟妇精品区| 野花日本大全免费观看10电影| 亚洲精品国产一区二区三区在线观| 第一次爱的人免费观看电视剧| 亚洲AV永久无码精品一区二区| AV无码人妻一区二区三区牛牛| 国产日产欧美一区二区蜜桃| 欧美成人一区二区三区在线观看| 亚洲成A人V欧美综合天堂麻豆 | 国产SM主人调教女M视频| 满月产奶1∨1POP骨科推荐| 午夜男女爽爽影院免费视频下载| av资源在线观看少妇| 精品久久久久久中文字幕202| 色综合热无码热国产| 中国自产一战二战三战来源| 国产熟妇一区二区三区AⅤ在线| 欧美猛少妇色XXXXX猛叫| 亚洲精品乱码久久久久久| 国产AV一区二区三区日韩| 男生把QQ放进女生的QQ里韩剧| 亚洲AV午夜成人片忘忧草在线 | 最新国产AV无码专区亚洲AVY| 国产亚洲精品第一综合另类| 日韩精品无码免费一区二区三区 | 欧美丰满熟妇乱XXXXX视频| 亚洲乱码av一区二区三区| 国产精品久久无码一区二区三区网| 欧美极度另类XXⅩOO| 亚洲色无码中文字幕手机在线| 国产精品青青在线麻豆| 日产亚洲一卡2卡3卡4卡网站| 中国JAPANESEXXXX少| 极品人妻被黑人中出种子| 无码秘 人妻一区二区三区| 超碰人人爽天天爽天天做| 男女高潮免费观看无遮挡| 亚洲午夜无码极品久久| 国产一本一道久久香蕉| 书房双乳晃动干柴烈火视频| JAPANESETUBE日本护| 老太BBWWBBWW高潮| 亚洲国模337P人艺体艺术| 国产乱妇乱子在线播视频播放网站| 日产精品卡2卡三卡四卡公司 | 亚洲色成人WWW永久网站| 国产午夜精品久久久久免费视| 日日摸夜夜添狠狠添欧美| 啊灬啊灬别停啊灬用力啊免费| 免费中国帅气体育生GARY| 一区二区AV在线| 久久不见久久见WWW免费| 亚洲AV午夜福利精品一区人妖 | 妇女被深耕过后的变化| 人妻少妇精品久久久久久| BBBBB毛茸茸BBBBBBB| 男按摩师舌头伸进去了| 找老女人泻火对白自拍| 久久亚洲男人第一AV网站| 亚洲人成网线在线播放VA| 精品久久久久久无码免费| 亚洲大尺度专区无码| 狠狠人妻熟妇av又粗又大| 亚洲AV无码成人精品区明星换面| 国产精品亚洲A∨天堂| 同性男男黄G片免费网站| 高潮VIDEOSSEXOHD潮喷| 肉体XXXXXⅠ8XXXX| 福利一区福利二区| 婷婷色婷婷开心五月| 国产精品福利一区二区久久| 无码人妻AⅤ一区二区三区| 国产麻传媒精品国产AV| 午夜亚洲国产理论片中文飘花 | 粉嫩av一区二区精品爆乳| 日韩一区二区视频在线| 丁香五月缴情网站| 色妺妺AⅤ爽爽影院偷拍| 妇女被深耕过后的变化| 无码AV片在线观看免费| 国产精品一卡二卡三卡四卡| 性做久久久久久免费观看| 黑人狂虐中国人妻陈艳| 亚洲人成无码区在线观看| 久久人人爽人人爽人人片DVD| 有码中文AV无码中文AV| 男生听到女生喘气是什么心理现象 | 久久亚洲色WWW成人图片| 综合色一色综合久久网| 欧美综合天天夜夜久久| 成人无码区免费视频观看 | 国产精品美女久久久浪潮AV| 亚洲AV无码久久寂寞少妇| 精品视频国产香蕉尹人视频| 一区二区三区精品视频日本| 女人与牛ZOZO| 成年午夜免费韩国做受| 无码人妻丰满熟妇奶水区码| 好男人影视在线观看下载| 亚洲中文字幕无码人在线 | 久99久热爱视频精品免费37| 幼射HD交中国妇| 欧洲美女与动交ZOZ0Z| 国产99久久九九精品无码| 亚洲AV无码国产永久播放蜜芽| 精品少妇人妻AV一区二区三区| 在厨房娇妻被朋友胯下挺进| 欧美色欧美亚洲另类二区 | 他用嘴巴含着我奶头吸怎么办| 国产永久AV福利在线观看| 夜夜夜高潮夜夜爽夜夜爰爰| 欧美日韩一区二区成人午夜电影| 粉嫩av.con| 亚洲成熟丰满熟妇高潮XXXXX| 久久亚洲色WWW成人图片| YYYY1111少妇影院在线观| 无码aⅴ精品一区二区三区浪潮 | 国产肉体XXXX裸体784大胆| 野花视频在线观看最新| 青青青伊人色综合久久| 国产大陆亚洲精品国产| 亚洲午夜无码久久久久| 人马畜禽CORPORATION| 国产女人精品视频国产灰线| 一边下奶一边吃面膜视频讲解图片| 区产品乱码芒果精品P站| 国产麻豆剧果冻传媒星空视频| 夜夜爽妓女8888视频免费观看| 人妻少妇精品无码专区动漫 | 野花高清免费观看完整视频中文版| 欧洲码和亚洲码的尺码区别| 国产精品香蕉成人网在线观看| 永久看一二三四线| 色五月五月丁香亚洲综合网| 久9视频这里只有精品试看| www.五月婷婷.com| 亚洲AV中文无码乱人伦在线r▽| 欧美精品九九99久久在免费线| 国产精品怡红院在线观看| 中英字幕乱码在线观看|