在教科書中找到以下功能。它應該創建最新版本的XHR對象。返回創建的XHR對象的位置
function createXHR(){
if (typeof arguments.callee.activeXString != "string"){
var versions = ["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"],
i, len;
for(i=0, len=versions.length; i<len; i++){
try {
new ActiveXObject(versions[i]);
arguments.callee.activeXString=versions[i];
break;
}catch(ex){
//skip
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
}
我的問題是:爲什麼我們不能只返回for循環內的對象?像這樣的東西:
function createXHR(){
if (typeof arguments.callee.activeXString != "string"){
var versions = ["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"],
i, len;
for(i=0, len=versions.length; i<len; i++){
try {
arguments.callee.activeXString=versions[i];
return new ActiveXObject(versions[i]);
}catch(ex){
arguments.callee.activeXString = undefined;
}
}
}
}
這兩個看起來相當於我。
刪除了'打破;'在第二個例子。 – Sahand
@Sandi:還有第二個問題,我已經更新了提及它的答案。 –
感謝您提供非常詳細的答案。 還有一個問題:在你的added else子句中,如果'new ActiveXObject(createXHR.activeXString);'會拋出一個異常,則不會處理這個異常。爲什麼不? – Sahand