您的位置:首页 > Web前端 > JavaScript

js 闭包 应用

2017-05-29 15:59 190 查看
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中还可以用逗号分隔语句,主要用于压缩空间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: