0

在下面的ajax请求中,有人可以解释一下(tryMS)

function createRequest() {
  try {
    request = new XMLHttpRequest();
  } catch (tryMS) {
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (otherMS) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (failed) {
        request = null;
      }
    }
  } 
  return request;
} 

(tryMS) 和 (otherMS) 是 javascript 的一部分,还是只是代码中使用的常见参数,它们有特定的功能吗?如果它是一个参数,它的价值来自哪里。

4

2 回答 2

1

Internet Explorer 没有 xhr XmlHttpRequest- 他们有自己的对象。此代码试图与浏览器无关;即无论使用何种浏览器都试图工作。该createRequest方法尝试创建一个XMLHttpRequest. 如果失败,它会尝试创建第一个ActiveXObject. 如果失败,它会退回到下一个活动的 x 对象。

(tryMS) 和 (otherMS) 是 javascript 的一部分,还是只是代码中使用的常见参数,它们有特定的功能吗?如果它是一个参数,它的价值来自哪里。

try/catch语句将错误传递给 catch 块。So tryMSand otherMSandfailed都只是对描述错误的字符串的引用。

于 2012-05-01T13:57:19.730 回答
1

在这种情况下,tryMSandotherMS只是变量名。您可以用任何有效的变量名称替换它们,并且逻辑将完全相同。在这种情况下,它们将在运行时表示的对象是它们的子类,Exception因为它们在 try-catch 语句的 catch 子句中使用。

您可以在此处阅读有关try-catch-finally 的更多信息。

我不同意这里使用的命名约定,但变量名称本质上是描述基于所使用浏览器的控制流。例如,如果创建一个XMLHttpRequest对象导致引发异常,那么我们应该尝试使用 Microsoft 浏览器的 AJAX 技术ActiveXObject- 因此命名为tryMS.

于 2012-05-01T13:59:38.933 回答