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

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

javascript中作用域一般分幾種?js中有沒有塊作用域?

在javascript中,作用域一般分3種,有塊作用域。3種作用域分別為:1、全局作用域,是聲明在所有函數之外的全局變量的作用域;2、局部作用域,是聲明在函數內的局部變量的作用域;3、塊級作用域,是塊級變量聲明語句開始到塊結束之間的區域。

javascript中作用域一般分幾種?js中有沒有塊作用域?

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

變量的作用域(scope),指的是變量在腳本代碼中的可讀、寫的有效范圍,也就是腳本代碼中可以使用這個變量的區域。在 ECMAScript6 之前,變量的作用域主要分為全局作用域、局部作用域(也稱函數作用域)兩種;

在 ECMAScript6 及其之后,變量的作用域主要分為全局作用域、局部作用域和塊級作用域這 3 種。

相應作用域的變量分別稱為全局變量、局部變量和塊級變量。

  • 全局變量聲明在所有函數之外;

  • 局部變量是在函數體內聲明的變量或者是函數的命名參數;

  • 塊級變量是在塊中聲明的變量,只在塊中有效。

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

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

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

同樣,因為 var 支持變量提升,而 let 和 const 不支持變量提升,所以使用 var 聲明的局部變量在整個函數中有效,而使用 let 和 const 聲明的局部變量從聲明語句開始到函數結束之間的區域有效。

需要注意的是,如果局部變量和全局變量同名,則在函數作用域中,局部變量會履蓋全局變量,即在函數體中起作用的是局部變量;在函數體外,全局變量起作用,局部變量無效,此時引用局部變量將出現語法錯誤。

對塊級變量來說,其作用域是塊級變量聲明語句開始到塊結束之間的區域。在塊開始到塊級變量聲明語句之間的區域為“暫時性死區”,在這個區域,塊級變量沒有效。

另外,在非嚴格運行模式中,變量可以不需要聲明,這些沒有聲明的變量,不管在哪里使用都屬于全局變量。通常不建議變量不聲明而直接使用,因為這樣有可能會產生一些不易發現的錯誤。

【例 1】變量的作用域示例。

<!doctype html> <html> <head> <meta charset="utf-8"> <title>變量作用域示例</title> <script>         var v1 = "JavaScript"; //全局變量      let v2 = "JScript"; //全局變量      let v3 = "Script"; //全局變量      scopeTest();    //調用函數      function scopeTest(){          var lv = "aaa"; //局部變量          var v1 = "bbb"; //局部變量          let v2 = "ccc"; //局部變量          if(true){               let lv = "123"; //塊級變量               console.log("塊內輸出的lv = " + lv); //123          }          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 </script> </head> <body> </body> </html>

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

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

另外,塊級變量 lv 和局部變量 lv 同名,在 if 判斷塊中,塊級變量 lv 有效,因而在塊中輸出的結果為“123”,而在塊外,局部變量 lv 有效,lv 變量的輸出結果為“aaa”。

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

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

javascript中作用域一般分幾種?js中有沒有塊作用域?
圖1:① 處代碼注釋前控制臺輸出結果

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

javascript中作用域一般分幾種?js中有沒有塊作用域?
圖 2:① 處代碼注釋后控制臺輸出結果

從圖 2 可看到,塊級變量在塊內覆蓋局部變量,局部變量在函數體內覆蓋全局變量,沒有被覆蓋的全局變量在函數體內、外都有效。思考:為什么在函數體內 v4 變量的輸出結果是“undefined”而不會報錯?

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
无套内射CHINESEHD| 色偷偷色噜噜狠狠成人免费视频 | 初尝人妻少妇中文字幕| 涩反差合集91综合一区二区清纯| 免费无码成人AV在线播| 久久国产精品日本波多野结衣| 国产免费AV片无码永久免费| 岛国岛国免费V片在线观看| 99国产精品白浆无码流出| 亚洲午夜性春猛交ⅩXXX| 亚洲AⅤ在线无码播放毛片一线天| 色综合色天天久久婷婷基地| 五月天国产亚洲AV麻豆| 亚洲人成亚洲人成在线观看| 亚洲JIZZJIZZ中国妇女| 无码专区人妻系列日韩| 天美传媒国色天香乱码| 色老99久久九九爱精品| 人人妻人人做人人爽| 男人天堂2018| 免费看又黄又无码的网站| 看全色黄大色黄女片爽在线看| 精品久久久久久成人AV| 国产成人高清精品亚洲| 二三四五六七无产乱码| 成熟女人牲交片免费观看视频| 国产精品爽爽VA在线观看网站| 国产成人剧情AV麻豆果冻| 国产97色在线 | 国产| 丰满少妇被猛烈进AV毛片| 俄罗斯IPHONE14PRO| 国色精品卡一卡2卡3卡4卡在线| 国产强奷在线播放| 国语对白做受XXXXX在| 麻豆传播媒体APP官网在线观看| 麻豆精品一卡2卡三卡4卡免费观| 日本ⅩXXX色视频在线观看| 性亚洲VIDEOFREE高清极| 新狼窝色AV性久久久久久| 香蕉大美女天天爱天天做| 亚洲av网站在线观看| 亚洲VA中文字幕无码毛片| 99RIAV国产精品视频| 国产剧情MV天美传媒| 孩教小UXXXⅩ精品| 欧美国产SE综合| 人C交ZZZ0OOZZZ000| 日本中文字幕一区二区高清在线| 深夜成人毛片天堂| 亚欧成人无码AV在线播放| 18禁黄无遮挡网站免费高清| 锕锕锕锕锕锕好大好深APP| 粉嫩av观看成人网站| 久久精品国产亚洲AV嫖农村妇女| 久久无码人妻精品一区二区三区| 免费无遮挡毛片中文字幕| 天天躁日日躁狠狠躁人妻| 亚洲AV成人精品五区| 99精品国产福利在线观看| 国产午夜免费啪视频观看视频 | 边做边爱完整版免费视频播放 | 精品日产一区二区三区| 久久自己只精产国品| 欧美精品一区二区蜜臀亚洲| 色欲蜜桃AV无码中文字幕| 一本大道久久东京热无码AV| 98精产国品一二三产区区| 国产调教性奴在线观看W| 无码中文字幕AV久久专区| 国产精品女人呻吟在线观看| 蜜桃AV秘 无码一区二区三欧| 精品亚洲欧美无人区乱码| 久久午夜夜伦鲁鲁片免费无码影视| 日日日日做夜夜夜夜无码| 午夜无码免费福利视频网址| AV无码人妻一区二区三区在线 | 男生把自己的手到女生的QQ里| 性色A∨精品高清在线观看| 八戒八戒视频在线WWW观看| 国产精品国产三级国快看| 精品人妻视频一区二区三区| 色欲av蜜臀一区二区三区vr| 91精品人妻人人做人碰人人爽| 大伊香蕉精品一区视频在线 | 色婷婷五月综合激情中文字幕 | 人妻中文字幕制服丝袜| 午夜亚洲国产理论片中文飘花| Y111111少妇影院无码| 国产高清在线a视频大全| 久久久国产成人一区二区| 人妻久久久一区二区三区| 亚洲A∨国产AV综合AV网站 | 韩漫画免费网站在线观看| 免费人成在线观看视频播放| 亚洲精品国产情侣AV在线| AV永久天堂一区二区三区| 久久久99精品成人片中文字幕| 无人区免费一二三四乱码| 当着老公的面被别人欺负该怎么办| 女人18片毛片60分钟中国| 无码一区二区三区AV免费| 成人午夜福利无码不卡视频| 精品国产成人国产在线观看| 无码吃奶揉捏奶头高潮视频| 亚洲综合精品伊人久久| JlZZJlZZ日本熟丰满人妻| 韩国理伦电影午夜三级| 我和公GONG在厨房日本电影| 伊人久久大香线蕉无码不卡| 粉嫩av.con| 日本嫩交12一16XXX视频| 亚洲日韩中文字幕日本| 国精产品一区二区三区糖心| 欧美黑人XXXX| 18SCHOOL第一次破苞摘花| 乱肉怀孕又粗又大| 一本一道久久A久久精品综合| 国产 在线 | 日韩| 日本一区二区在线播放| 插花弄玉小说荔枝很甜| 精品无码一区二区三区水蜜桃 | 精品国产一区二区AV片| 亚洲阿V天堂无码Z2018| 国内精品乱码卡一卡2卡三卡新区| 无码人妻丰满熟妇区五十路| AAA日本高清在线播放免费观看 | 性饥渴老头XXXXⅩHD| 国产精品久久婷婷六月丁香| 欧美交换配乱婬粗大| 98久9在线 | 免费| 欧美乱妇狂野欧美在线视频| JAVAPARSERHD高潮| 久久免费的精品国产V∧| 亚洲综合无码一区二区| 久久久久亚洲AV无码尤物| 五十熟妇日本熟妇久久| 国产精品免费观看调教网| 香蕉直播永久免费版APP| 国产一本一道久久香蕉| 日日狠狠久久偷偷色综合免费 | 中文无码精品一区二区三区 | 久久天天躁夜夜躁狠狠2018| 中国老太太X×××XHD| 国产在线内射婷婷| 亚洲国产精品久久青草无码| 国产成人精品午夜福利APP色多| 他趴在两腿中间舔我私密有事吗| 国产激情久久久久影院蜜桃AV | 2021网站无需下载急急急| 精品人妻一区二区三区四区| 亚洲人妻在线视频| 久久亚洲精品无码AV大香| 亚洲精品无码成人片| 99久久免费精品高清特色大片| 欧美日韩精品人妻二区| 希露薇の繁殖计划游戏| 国产最大成人亚洲精品| 亚洲中文字幕精品久久久久久动漫 | 国产福利在线 | 传媒| 亚洲 欧美 变态 另类 综合 | 亚洲人成无码网在线观看APP| 久久久久亚洲AV无码专区桃色| 18日韩xxxx| 日本人真人姓交大视频| 国产精品日本亚洲欧美| 亚洲乱亚洲乱妇无码| 国产精品露脸视频观看| 亚洲国模337P人艺体艺术| 国产日产欧产精品精品软件 | 无码国产玉足脚交久久2020| 激情视频传媒一区二区| 无码人妻精品一区二区蜜桃网站| 国内精品久久久久影院优| 孕妇滴着奶水做着爱A| 久久久久久精品免费免费直播 | 久久国产精品_国产精品| 2020亚洲无码| 四虎影库最新地址| 精品一区二区三区AV天堂| JEALOUSVUE熟睡睡觉| 午夜亚洲乱码伦小说区69堂 | 曰韩无码AV片免费播放不卡| 精品无码一区二区三区亚洲桃色| 中文字幕无码中文字幕有码A| 萝卜视频高清免费视频日本| 边吃奶边扎下面动态| 亚洲AV成人片无码www妖精| 老湿机香蕉久久久久久| 中文字幕亚洲情99在线| 免费人成无码大片在线观看| 丰满亚洲大尺度无码无码专线| 亚洲国产精品久久久天堂麻豆宅男 | 岳的奶大又白又紧| 少妇泬出白浆18P| 久久精品99国产AV精品蜜桃| 被义子侵犯的漂亮人妻中字| 亚洲第一狼人天堂网亚洲AV| 久久69国产精品久久69软件| СЕКС高清ВИДЕ学生妹| 新妺妺窝人体色7777婷婷|