js變量作用域及可訪問性的探討
2024-09-06 12:44:29
供稿:網友
每一種語言都有變量的概念,變量是用來存儲信息的一個元素。比如下面這個函數:
代碼如下: function Student(name,age,from)
{
this.name = name;
this.age = age;
this.from = from;
this.ToString = function()
{
return "my information is name: "+this.name+",age : "+this.age+", from :" +this.from;
}
}
Student類有三個變量,分別為name(名字),age(年齡),from(籍貫),這三個變量構成了描述一個對象的信息。當然,這里還有一個方法用來返回Student的信息。
但是,我們是不是定義了一個變量,它就能一直存在著,并且還有可能在任何地方都能被訪問和使用直到其被銷毀?仔細想想,上面的需求是比較過分的,因為某些變量在某個功能實現后就不再利用了,但如果這個變量還存在的話,就占用了系統資源了,俗語曰:“站著茅坑不拉#$%”。
于是我們對變量的及時和按需求地銷毀有一個探討的話題了。
好,切入正題吧,就本人所接觸過的來講,js中支持如下幾種類型的變量,分別為:局部變量、類變量、私有變量、實例變量、靜態變量和全局變量。接下來我們就一一探討研究下。
局部變量:
局部變量一般指在{}范圍內有效變量,也就是語句塊內有效的變量,如:
代碼如下:function foo(flag)
{
var sum = 0;
if(flag == true)
{
var index;
for(index=0;index<10;index++)
{
sum +=index;
}
}
document.write("index is :"+index+"<br>");
return sum;
}
//document.write("sum is :" +sum+"<br>");
document.write("result is :"+foo(true)+"<br>"); 該代碼執行后輸出的結果為:“index is :undefined” 和 “result is :0”,我們可以看到希望輸出的index變量的值為undefined,也就是未定義。因此我們可以發現,index變量在if語句塊結束后即被銷毀了。那么“sum”變量呢?這個變量在foo()函數段執行完畢后被銷毀了,如果您去掉我注釋的那條語句,再執行,您將會發現系統將報錯。值得注意的是,如果我把上面的foo()函數改成如下:
代碼如下:function foo(flag)
{
var sum = 0;
for(var index=0;index<10;index++)