??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
?/SPAN>java,c++中不同的地方是,js中没有块作用?/SPAN>(Block Scope)。变量的作用域将从声明一直持l到function的结。看个例子就会明白了?/SPAN>
function testScope()
{
var a = "a";
function g() { alert(a); }
g(); //q里输出l果?/SPAN>a Q因?/SPAN>a的作用域持l到function testScope的结?/SPAN>
for(var i=0; i<2; i++)
{
var a = "a is changed"; //q里的变?/SPAN>a覆盖开始声明的变量a
var b = "b"; //b的作用域从声明一直到function的结?/SPAN>
}
alert(a); // 输出l果?/SPAN> a is changedQ?/SPAN> js首先查找到的a是在循环中定义的那个
alert(b); // 输出?/SPAN> b ?/SPAN>java?/SPAN>,此时访问不到变?/SPAN>b,b已经Z作用?/SPAN>,但是?/SPAN>js中是可以?/SPAN>.
}
2. js中的垃圾回收Q?/SPAN>garbage collectionQ?/SPAN>
js也是一门采用垃圑֛收机制的语言Q和java一栗?/SPAN>js的解释器负责分配和回收内存?/SPAN>
E序员无需?/SPAN>CQ+中那h动用delete释放内存?/SPAN>
但是js也有delete关键?/SPAN>Q?STRONG>它是用来删除对象的属性,或者删除数l中的指定元?/STRONG>。ƈ不能删除对象本n。用法如下:
delete objectName.property
delete objectName[index]
delete property
参数
property |
|
W三U用法delete property只能?/SPAN> with 语句中用,用来删除对象的属性?BR>
补充Q在微Y的JScript中有CollectGarbage()函数可以用来回收内存Q官Ҏ不推荐使用此方法,你的E序不应该依赖此Ҏ。IE在最化的时候会q行回收内存?BR>