1. js中的變量作用域(Variable Scope)
和java,c++中不同的地方是,js中沒有塊作用域(Block Scope)。變量的作用域?qū)穆暶饕恢背掷m(xù)到function的結(jié)尾??磦€例子就會明白了。
function testScope()
{
var a = "a";
function g() { alert(a); }
g(); //這里輸出結(jié)果為a ,因為a的作用域?qū)⒊掷m(xù)到function testScope的結(jié)尾
for(var i=0; i<2; i++)
{
var a = "a is changed"; //這里的變量a將覆蓋開始聲明的變量a
var b = "b"; //b的作用域從聲明一直到function的結(jié)尾
}
alert(a); // 輸出結(jié)果為 a is changed, js首先查找到的a是在循環(huán)中定義的那個
alert(b); // 輸出為 b 在java中,此時將訪問不到變量b,b已經(jīng)出了作用域,但是在js中是可以的.
}
2. js中的垃圾回收(garbage collection)
js也是一門采用垃圾回收機制的語言,和java一樣。js的解釋器負責分配和回收內(nèi)存。
程序員無需像C++中那樣手動用delete釋放內(nèi)存。
但是js也有delete關(guān)鍵字,它是用來刪除對象的屬性,或者刪除數(shù)組中的指定元素。并不能刪除對象本身。用法如下:
語法
delete objectName.property
delete objectName[index]
delete property
參數(shù)
第三種用法delete property只能在 with 語句中使用,用來刪除對象的屬性。
補充:在微軟的JScript中有CollectGarbage()函數(shù)可以用來回收內(nèi)存,官方文檔不推薦使用此方法,你的程序不應該依賴此方法。IE在最小化的時候會進行回收內(nèi)存。
posted on 2006-02-27 11:33
南哥 閱讀(521)
評論(1) 編輯 收藏 所屬分類:
AJAX