最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVASCRIPT函數(shù)作用域和提前聲明 分享

 更新時(shí)間:2013年08月22日 15:04:44   作者:  
這篇文章介紹了JAVASCRIPT函數(shù)作用域和提前聲明,有需要的朋友可以參考一下
一些語言如C、java都有塊級(jí)作用域,即花括號(hào)內(nèi)的每一段代碼都具有各自的作用域,而且變量在聲明它們的代碼段之外是不可見的,但是javascript沒有塊級(jí)作用域。javascript使用函數(shù)作用域,即變量在聲明它們的函數(shù)體以及這個(gè)函數(shù)體嵌套的任意函數(shù)體內(nèi)都是有定義的,也即函數(shù)內(nèi)聲明的所有變量在函數(shù)體內(nèi)始終是可見的。這樣就意味著變量在聲明之前就可以使用,這個(gè)特性被稱為"聲明提前",即javascript函數(shù)里聲明的所有變量都被提前至函數(shù)的頂部。來看個(gè)例子。
復(fù)制代碼 代碼如下:

  var test1 = "globalVariable";
  function test(){
    console.log(test1);  
    var test1 = "localVariable";
    console.log(test1);
  }

上述函數(shù)執(zhí)行的結(jié)果是:先輸出"undefined",再輸出"localVariable"。
很多人都會(huì)誤以為結(jié)果是:先輸出"globalVariable,再輸出localVariable"。其實(shí)不然,由于函數(shù)作用域的特性,局部變量在整個(gè)函數(shù)體始終是有定義的,也即,在函數(shù)體內(nèi)局部變量遮蓋了同名全局變量,但是只有在程序執(zhí)行到var語句的時(shí)候,局部變量才會(huì)被真正的賦值。因此,上述過程相當(dāng)于,將函數(shù)內(nèi)的變量聲明提前至函數(shù)體頂部,同時(shí)變量初始化留在原來的位置。就相當(dāng)于如下這個(gè)函數(shù)
復(fù)制代碼 代碼如下:

  var test1 = "globalVariable";
  function test(){
    var test1;  //將函數(shù)內(nèi)的變量聲明提前至函數(shù)頂部
    console.log(test1);  
    test1 = "localVariable";  //賦值
    console.log(test1);
  }

但是,如果函數(shù)內(nèi)沒有用var聲明變量,情況又有所不同。
復(fù)制代碼 代碼如下:

  var test1 = "globalVariable";
  function test(){
    console.log(test1);  
    test1 = "localVariable";  
    console.log(test1);  
  }

這個(gè)函數(shù)執(zhí)行的結(jié)果是:先輸出"globalVariable",再輸出"localVariable"。
由于函數(shù)體內(nèi)的test1變量沒有用var聲明,就默認(rèn)為全局變量,當(dāng)然就不存在變量提前聲明的問題。第一行就會(huì)輸出"globalVariable",而第三行改變了test1全局變量的值,輸出了"localVariable"。

相關(guān)文章

最新評(píng)論

武汉市| 大渡口区| 阜新市| 大石桥市| 西充县| 泌阳县| 高碑店市| 胶南市| 香河县| 禄丰县| 兰西县| 蓝田县| 张家港市| 尖扎县| 瑞金市| 洪江市| 马公市| 乐山市| 琼海市| 秦皇岛市| 上高县| 普定县| 都兰县| 紫云| 和林格尔县| 宁河县| 南和县| 丰镇市| 武安市| 华坪县| 巫山县| 潢川县| 海伦市| 合作市| 加查县| 凌源市| 通山县| 晋城| 香格里拉县| 衡山县| 乌鲁木齐县|