JavaScript中没有直接的块级作用域,然而,可以使用匿名函数表
达式来模拟块级作用域,任何定义在匿名函数中的变量在匿名函数执行
完之后都将被销毁,在匿名函数外访问这些变量将会产生错误。如:

     
functionoutputNumbers(count)
     
{
        
(function()
        
{
           
for(vari=0;i<count;i++)
           
{
              
alert(i);
           
}
        
})();
        
alert(i);   //causes an error
      }

  
匿名函数表达式提供了创建私有作用域的方法。这种技术通常应用
在函数外部的全局作用域中,防止变量和函数添加到全局作用域中。在
大型应用中,可以避免命名冲突。如:

     
(function()
     
{
        
varnow=newDate();
        
if(now.getMonth()==0&&now.getDate()==1)
        
{
           
alert("Happy new year!");
        
}
     
})();

  
上例中,匿名函数内的now变量只能在匿名函数内被访问。成为
局部变量。
  
这种模式不会有闭包产生的内存问题,因为不存在对匿名函数的
引用。当函数执行完成后,作用域链将被立即销毁。
  
上例中的匿名函数实际上是一种立即执行的匿名函数表达式。