我測試2對場景:立即執行功能表現
1)傳遞一個全局變量作爲自變量...
(function(d){
//do some stuff with d
return //something
})(document);
...或指定全局的局部變量。
(function(){
var d = document;
//do the same stuff
return //something
})();
結果從瀏覽器到瀏覽器,從版本到版本,甚至從測試到測試都是不同的!
2.)我有一個通過XMLHttpRequest獲取的大型數據對象。假設這個對象可以通過幾種方法訪問,但只有一個與父函數的作用域相關。
(function(){
//get data object
var data = response;
//change GUI, assign events, do some other stuff
var searchInData = function(id){ //this will be used often
//code
};
//data object won't be accessed any more
//a lot of code
return //something
})();
...或使用它?
(function(){
var search = (function(){
var data = response;
//change GUI, assign events, do some other stuff
return function(id){
//code
}
})();
//other stuff
return //something
})();
同樣,我無法得到明確的結果,因此:使用哪個,爲什麼以及何時使用?
使用最簡單,最清晰的代碼。編寫同一段代碼有無限多種方式。 – Jon
儘管差異可能最小,但要測試的最佳位置是http://jsperf.com/ – ManseUK