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

Javascript中的變量使用說明

 更新時間:2010年05月18日 19:55:45   作者:  
使用過javascript的朋友都知道,在javascript中,變量的使用是個比較頭疼的問題,經(jīng)常會產生 些比較匪夷所思的結果。究其原因,大多是對javascript的變量相關知識了解得不夠透徹。
javascript中的所有變量都是類型松散的,不同于其他面向對象語音的變量聲明都是強類型的.因此Javascript 的變量聲明是不包括類型的。通過var關鍵字或者直接寫變量名來聲明一個變量,如:
var v = 1;
v=1;

這時有人可能會問,上述的兩種聲明有什么區(qū)別,為什 么會有這兩種不同的聲明方式,這就涉及到javascript中變量的作用域了。在javascript中,變量的作用域包括全局和函數(shù)級別的。

全局變量可以聲明在函數(shù)體外,無論使用上述的哪種聲明方式,在函數(shù)體外 聲明的變量都是全局變量。如:
復制代碼 代碼如下:

<script type="text/javascript" language="javascript">
var v = 1;

function foo()
{
alert(v);
}

w = 2;
function bar()
{
alert(w);
}

foo();
</script>

運行結果:1 2

另外,在函數(shù)內部聲明的變量如果不使用var關鍵字,聲明的變量也將是全局變量。如:
復制代碼 代碼如下:

<script type="text/javascript" language="javascript">
function foo()
{
v = 1;
}

foo();
alert(v);
</script>

運行結果:1
但是需要注意,這種情況下,若要使用變量,必須先調用聲明變量的函數(shù)對變量進行初始化, 如foo(),否則,將會出現(xiàn)“變量v未定義”的錯誤。

全局變量將作為window對象的屬性存在,因為可以 通過window.$($表示變量名)訪問。當然也可以通過變量名直接訪問。下面會講到為什么有這兩種訪問方式。

在函數(shù)內部通過var關鍵字聲明的變量將是函數(shù)級別的變量,其作用域僅僅限于函數(shù)內部。如:
復制代碼 代碼如下:

<script type="text/javascript" language="javascript">
function foo()
{
var v=1;
alert(v);
}

alert(v);
</script>

運行結果:1 變量“v”未定義

通過上面的分析,可以發(fā)現(xiàn)關鍵字var主要作用 是定義函數(shù)級別的變量。

細心的朋友可以會問,如果在函數(shù)內部和外部定義了相同的變量,會是什么樣的結果呢?如:
復制代碼 代碼如下:

<script type="text/javascript" language="javascript">
var v=1;
function foo()
{
alert(v);
var v=2;
}

foo();
</script>

運行結果:undefined
?。。。?!也許有人會比較郁悶了,v明明白白的定義在函數(shù)foo()體外,為什么會是 undefined呢?這就涉及到javascript的解析了。根據(jù)經(jīng)驗,javascript對于函數(shù)體內變量的解析過程是:
搜索所有的 var關鍵字,將其變量聲明放到函數(shù)體的最前面,賦值和使用仍然保持不變,這樣,上面的javascript實際上是等同于:
復制代碼 代碼如下:

<script type="text/javascript" language="javascript">
var v=1;
function foo()
{
var v;
alert(v);
v=2;
}

foo();
</script>

照此分析,產生上述 的結果就顯而易見了,由于函數(shù)內部的變量的優(yōu)先級高于全局變量的優(yōu)先級(大部分的編程語言都是這樣), 函數(shù)內部的變量v覆蓋了全局變量v,但是由于在使用函數(shù)內部變量v時,它僅僅聲明,但未賦值,因此結果是undefined。

如果在方法 體內仍然要使用定義的全局變量v,window對象此時派上大大的用場了,可以通過window.v來訪問。如:
復制代碼 代碼如下:

<script type="text/javascript" language="javascript">
var v=1;
function foo()
{
alert(window.v);
alert(v);
var v=2;
}

foo();
</script>

運行結果:2 undefined

相關文章

最新評論

平阳县| 安国市| 称多县| 邢台县| 久治县| 华坪县| 晋江市| 云林县| 文登市| 安西县| 长汀县| 铜梁县| 临夏县| 泸西县| 怀来县| 洛阳市| 三台县| 绥德县| 西青区| 手游| 江安县| 玛纳斯县| 河曲县| 萝北县| 洞头县| 肥乡县| 睢宁县| 尚志市| 西乌珠穆沁旗| 凤城市| 太白县| 石林| 澄城县| 南城县| 南汇区| 南皮县| 伊吾县| 屯昌县| 濉溪县| 应用必备| 义马市|