文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>JavaScript中容易被误解的两个地方

JavaScript中容易被误解的两个地方

时间:2007-04-20  来源:linxh

转自: http://magicdoom.spaces.live.com/blog/cns!94854BA5F2AB4D46!113.entry  

1.       js中的变量作用域(Variable Scope)

和java,c++中不同的地方是,js中没有块作用域(Block Scope)。变量的作用域将从声明一直持续到function的结尾。看个例子就会明白了。

   function testScope() 
   { 
      var a = "a";   
      function g() { alert(a); } 
      g();   //这里输出结果为a ,因为a的作用域将持续到function  testScope的结尾 
     for(var i=0; i<2; i++) 
     { 
       var a = "a is changed";  //这里的变量a将覆盖开始声明的变量a 
       var b = "b";    //b的作用域从声明一直到function的结尾          
     } 
    alert(a);    // 输出结果为  a is changed, js首先查找到的a是在循环中定义的那个 
    alert(b);    // 输出为 b   在java中,此时将访问不到变量b,b已经出了作用域,但是在js中是可以的. 
   }

2. js中的垃圾回收(garbage collection)

    js也是一门采用垃圾回收机制的语言,和java一样。js的解释器负责分配和回收内存。

 程序员无需像C++中那样手动用delete释放内存。

但是js也有delete关键字,它是用来删除对象的属性,或者删除数组中的指定元素。并不能删除对象本身。用法如下:

语法

delete objectName.property
delete objectName[index]
delete property

参数

objectName

要删除属性或元素的对象。

property

要删除的属性。

index

要删除的数组元素的序号。

第三种用法delete property只能在 with 语句中使用,用来删除对象的属性。

补充:在微软的JScript中有CollectGarbage()函数可以用来回收内存,官方文档不推荐使用此方法,你的程序不应该依赖此方法。IE在最小化的时候会进行回收内存。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载