官术网_书友最值得收藏!

4.6 變量的作用域

視頻講解

變量的作用域是指變量在程序中的有效范圍,在有效范圍內(nèi)可以使用該變量。變量的作用域取決于該變量是哪一種變量。

4.6.1 全局變量和局部變量

在JavaScript中,變量根據(jù)作用域可以分為兩種:全局變量和局部變量。全局變量是定義在所有函數(shù)之外的變量,作用范圍是該變量定義后的所有代碼;局部變量是定義在函數(shù)體內(nèi)的變量,只有在該函數(shù)中,且該變量定義后的代碼中才可以使用這個(gè)變量,函數(shù)的參數(shù)也是局部性的,只在函數(shù)內(nèi)部起作用。如果把函數(shù)比作一臺(tái)機(jī)器,那么,在機(jī)器外擺放的原材料就相當(dāng)于全局變量,這些原材料可以為所有機(jī)器使用,而機(jī)器內(nèi)部所使用的原材料就相當(dāng)于局部變量。

例如,下面的程序代碼說明了變量的作用域的有效范圍:

    01  var a="這是全局變量";          //該變量在函數(shù)外聲明,作用于整個(gè)腳本
    02  function send(){               //定義函數(shù)
    03      var b="這是局部變量";      //該變量在函數(shù)內(nèi)聲明,只作用于該函數(shù)體
    04      document.write(a+"<br>");  //輸出全局變量的值
    05      document.write(b);         //輸出局部變量的值
    06  }
    07  send();                        //調(diào)用函數(shù)

運(yùn)行結(jié)果為:

    這是全局變量
    這是局部變量

上述代碼中,局部變量b只作用于函數(shù)體,如果在函數(shù)之外輸出局部變量b的值將會(huì)出現(xiàn)錯(cuò)誤。錯(cuò)誤代碼如下:

    01  var a="這是全局變量";           //該變量在函數(shù)外聲明,作用于整個(gè)腳本
    02  function send(){                //定義函數(shù)
    03      var b="這是局部變量";       //該變量在函數(shù)內(nèi)聲明,只作用于該函數(shù)體
    04      document.write(a+"<br>");   //輸出全局變量的值
    05  }
    06  send();                        //調(diào)用函數(shù)
    07  document.write(b);              //錯(cuò)誤代碼,不允許在函數(shù)外輸出局部變量的值
4.6.2 變量的優(yōu)先級(jí)

如果在函數(shù)體中定義了一個(gè)與全局變量同名的局部變量,那么該全局變量在函數(shù)體中將不起作用。例如,下面的程序代碼將輸出局部變量的值:

    01  var a="這是全局變量";       //聲明一個(gè)全局變量a
    02  function send(){           //定義函數(shù)
    03      var a="這是局部變量";   //聲明一個(gè)和全局變量同名的局部變量a
    04      document.write(a);     //輸出局部變量a的值
    05  }
    06  send();                    //調(diào)用函數(shù)

運(yùn)行結(jié)果為:

    這是局部變量

上述代碼中,定義了一個(gè)和全局變量同名的局部變量a,此時(shí)在函數(shù)中輸出變量a的值為局部變量的值。

主站蜘蛛池模板: 沙洋县| 获嘉县| 临颍县| 怀化市| 黎城县| 墨竹工卡县| 迭部县| 白山市| 黄石市| 重庆市| 永善县| 灵台县| 荆州市| 井研县| 长丰县| 碌曲县| 兴化市| 中阳县| 枝江市| 洮南市| 石河子市| 富川| 淮南市| 施甸县| 许昌市| 四川省| 栾川县| 合阳县| 甘孜| 鄢陵县| 德格县| 武义县| 许昌市| 达州市| 隆化县| 奉贤区| 奈曼旗| 化德县| 佛坪县| 赣州市| 蒲城县|