Javascript中的變數使用說明

來源:互聯網
上載者:User

javascript中的所有變數都是類型鬆散的,不同於其他物件導向語音的變數聲明都是強型別的.因此Javascript 的變數聲明是不包括類型的。通過var關鍵字或者直接寫變數名來聲明一個變數,如:
var v = 1;
v=1;

這時有人可能會問,上述的兩種聲明有什麼區別,為什 麼會有這兩種不同的聲明方式,這就涉及到javascript中變數的範圍了。在javascript中,變數的範圍包括全域和函數層級的。

全域變數可以聲明在函數體外,無論使用上述的哪種聲明方式,在函數體外 聲明的變數都是全域變數。如: 複製代碼 代碼如下:<script type="text/javascript" language="javascript">
var v = 1;

function foo()
{
alert(v);
}

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

foo();
</script>

運行結果:1 2

另外,在函數內部聲明的變數如果不使用var關鍵字,聲明的變數也將是全域變數。如: 複製代碼 代碼如下:<script type="text/javascript" language="javascript">
function foo()
{
v = 1;
}

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

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

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

在函數內部通過var關鍵字聲明的變數將是函數層級的變數,其範圍僅僅限於函數內部。如: 複製代碼 代碼如下:<script type="text/javascript" language="javascript">
function foo()
{
var v=1;
alert(v);
}

alert(v);
</script>

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

通過上面的分析,可以發現關鍵字var主要作用 是定義函數層級的變數。

細心的朋友可以會問,如果在函數內部和外部定義了相同的變數,會是什麼樣的結果呢?如: 複製代碼 代碼如下:<script type="text/javascript" language="javascript">
var v=1;
function foo()
{
alert(v);
var v=2;
}

foo();
</script>

運行結果:undefined
!!!!!也許有人會比較鬱悶了,v明明白白的定義在函數foo()體外,為什麼會是 undefined呢?這就涉及到javascript的解析了。根據經驗,javascript對於函數體內變數的解析過程是:
搜尋所有的 var關鍵字,將其變數聲明放到函數體的最前面,賦值和使用仍然保持不變,這樣,上面的javascript實際上是等同於: 複製代碼 代碼如下:<script type="text/javascript" language="javascript">
var v=1;
function foo()
{
var v;
alert(v);
v=2;
}

foo();
</script>

照此分析,產生上述 的結果就顯而易見了,由於函數內部的變數的優先順序高於全域變數的優先順序(大部分的程式設計語言都是這樣), 函數內部的變數v覆蓋了全域變數v,但是由於在使用函數內部變數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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.