1,闭包可以用作封装,避免变量污染
2,闭包可为不能传参的函数传参,例如定时器,异步请求的回调函数,各种事件的触发函数
以下是测试的一些例子
//匿名函数的应用
(function()
{
return function()
{
alert(9);
}
}
)()();
var xx1 =(function(){
var reqObj= function()
{
//alert("pb");
this.x = 3;
}
reqObj.prototype =
{
init:function()
{
this.x++;
}
};
return (function(){
return new reqObj();
});
})();
console.info("xxxxxxxxxxxx="+xx1().x);
console.info("xxxxxxxxxxxx="+xx1().x);
//异步加载时,传参数,dom对象
function request(kind,type,Object){
httpxml = createXMLHttpRequest();
var test1 = callBack(httpxml);//返回内部函数
//地市流量
ajax(httpxml,"get","http://125.71.202.23:8888/monitor/scdxReportsController/getLargData?kind="+kind,"");
httpxml.onreadystatechange = test1;//调用
}
function callBack(httxml)
{
return function()
{
alert(httxml.status);
}
}
3,在顺带说一下,js中的匿名函数
类似下面这种写法
(function(){
})//此为定义一个匿名函数
(function(){
})();//此为先定义,后运行
(function(){
})()();此为运行此匿名函数返回的函数类型的变量
这种立即执行函数,会在函数外加上括号或者一个运算符,主要是为了把函数声明转换为函数表达式,这样浏览器解析器才不会解析出错。
类似的还有这种写法 !function(){}();
js中还可以用逗号分隔语句,主要用于压缩空间。