概念: 立即执行函数顾名思义就是函数定义好之后立即执行。 函数表达式方式: 函数表达式后面加括号()即可立即执行函数。
var xmlhttpUtil = function () { function getText(url,callback){ alert("dog"); }();
匿名函数方式: 匿名函数不允许作为单独的语句直接出现于javascript中,因此要想立即执行函数, 必须做出一些符合语法的改变:方法1、是将匿名函数赋值给一个变量,这就成了函数表达式,可在其后加括号立即执行。 方法2、匿名函数外面套一个括号(这是js语法允许的),这就相当于成了函数表达式,然后再在其后加括号即可立即执行。
(function(b){ alert(b); })(321);
模块化:
由于函数内部的变量不会污染全局作用域,因此立即执行函数可用于模块化,很多第三方库都采用了这种方式。 var xmlhttpUtil = function () { function getText(url,callback){ var request=new XMLHttpRequest(); request.open("GET",url); request.send(null); request.onreadystatechange=function(){ if(request.readyState===4 && request.status===200){ var type=request.getResponseHeader("Content-Type"); if(type.match(/^text/)) callback(request.responseText); alert(request.responseText); } else { } } } let xmlHttpRequestObj={}; xmlHttpRequestObj.getText=getText; return xmlHttpRequestObj; }(); 执行:
xmlhttpUtil.getText("/dog",function () { alert("xmlhttprequest请求响应!"); });