国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

Javascript中的作用域及塊級(jí)作用域

2024-05-06 15:23:42
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一、塊級(jí)作用域的說(shuō)明

在學(xué)習(xí)JavaScript的變量作用域之前,我們應(yīng)當(dāng)明確幾點(diǎn):

a、JavaScript的變量作用域是基于其特有的作用域鏈的。

b、JavaScript沒(méi)有塊級(jí)作用域。

c、函數(shù)中聲明的變量在整個(gè)函數(shù)中都有定義。

  javascript的變量作用域,與平時(shí)使用的類C語(yǔ)言不同,例如C#中的代碼:

static void Main(string[] args){   if(true)   {    int number=10;   }  Console.WriteLine(number);}

 這段代碼進(jìn)行編譯,是無(wú)法通過(guò)的,因?yàn)?當(dāng)前上下文不存在number".

  因?yàn)檫@里變量的作用域是由花括號(hào)限定的,稱為塊級(jí)作用域。

       在塊級(jí)作用域下,所有的變量都在定義的花括號(hào)內(nèi),從定義開始到花括號(hào)結(jié)束這個(gè)范圍內(nèi)可以使用,出了這個(gè)范圍就是無(wú)法訪問(wèn),也就是說(shuō)

if(true){  int number=10;  Console.WriteLine(number);}

這樣可以訪問(wèn),因?yàn)樽兞康亩x與使用在同一個(gè)花括號(hào)內(nèi)。

但是在javascript中沒(méi)有塊級(jí)作用域的概念。

二、javascript中的作用域

 1、函數(shù)限定變量作用域

       在javascript中,函數(shù)里面定義的變量,,可以在函數(shù)里面被訪問(wèn),但在函數(shù)外無(wú)法訪問(wèn),代碼:

<script type="text/javascript">  var num=function()  {   var number=10;  };  try{    alert(number);  }catch(e)  {    alert(e);  } </script>

    代碼運(yùn)行時(shí),會(huì)拋出一個(gè)異常,變量number沒(méi)有定義,是因?yàn)槎x在函數(shù)中的變量無(wú)法再函數(shù)外使用,在函數(shù)內(nèi)可以任意使用,即使在賦值之前:

<script type="text/javascript"> var num=function(){    alert(number);    var number=10;    alert(number); }; try{   num(); }catch(e){  alert(e); }</script>

    這段代碼運(yùn)行后,不會(huì)拋出錯(cuò)誤,彈出兩次,分別是undefined和10

 2.子域訪問(wèn)父域

     函數(shù)可以限定變量的作用域,那么在函數(shù)中的函數(shù)就為該作用域的子域,在子域中的代碼可以訪問(wèn)到父域中的變量,代碼如下:

<script type="text/javascript"> var func=function(){    var number=10;    var sub_func=function(){      alert(num);    };   sub_func();};func();</script>

 這段代碼執(zhí)行得到的結(jié)果是10,但是在子域中訪問(wèn)父域的代碼也是有條件的

<script type="text/javascript"> var func=function(){    var number=10;    var sub_func=function(){      var num=20;      alert(num);    };   sub_func();};func();</script>

這段代碼比前面多了一個(gè)"var num=20;",這句代碼在子域中,那么子域訪問(wèn)父域的情況就發(fā)生了變化,這段代碼打印的結(jié)果是20,此時(shí)子域訪問(wèn)的num是子域中的變量,而不是父域中的。由此可見(jiàn)訪問(wèn)有一定規(guī)則可言,在javascript中使用變量,javascript解釋器首先在當(dāng)前作用域中搜索是否有該變量的定義,如果有,就是用這個(gè)變量,如果沒(méi)有就到父域中尋找變量,依次類推,直到最頂級(jí)作用域,仍然沒(méi)有找到就拋出異常"變量未定義",代碼如下:

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 怀仁县| 沿河| 峨山| 休宁县| 宣武区| 报价| 大同县| 贵州省| 开原市| 揭东县| 女性| 阿拉善盟| 潍坊市| 太仓市| 普陀区| 磐安县| 彰武县| 陆川县| 云龙县| 大英县| 泰和县| 云林县| 新和县| 瑞昌市| 凌海市| 筠连县| 抚顺县| 潢川县| 仪陇县| 绥化市| 洪江市| 安阳县| 宜章县| 双峰县| 昆山市| 宜君县| 龙江县| 漯河市| 永胜县| 宝坻区| 桃园县|