概念:立即執行函數顧名思義就是函數定義好之後立即執行。函數表達式方式:函數表達式後面加括弧()即可立即執行函數。 var xmlhttpUtil = function () { function getText(url,callback){ alert("dog"); }(); 匿名函數方式:匿名函... ...
概念:
立即執行函數顧名思義就是函數定義好之後立即執行。
函數表達式方式:
函數表達式後面加括弧()即可立即執行函數。
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請求響應!");
});