为什么我们使用typeof XMLHttpRequest!=“undefined”?什么是未定义的?

时间:2015-07-16 02:51:10

标签: javascript

为什么我们使用typeof XMLHttpRequest !="undefined"

什么是未定义我不明白那里有什么未定义的?

 if (typeof XMLHttpRequest != "undefined")
     {
        xmlHttp= new XMLHttpRequest();
     }
     else if (window.ActiveXObject)
      {
        xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
      }

2 个答案:

答案 0 :(得分:3)

这些检查适用于非常旧版本的Internet Explorer(IE6及更低版本)。

有多种方法可以检测浏览器是否支持XMLHttpRequest。使用typeof SomeObject只是其中一种方式。你可能也会看到......

if ("XMLHttpRequest" in window) { ... }

或直接

if (window.XMLHttpRequest) { ... }

答案 1 :(得分:2)

首先,除非您有一些非常奇怪的要求支持IE6,否则请删除此代码。它不再需要了。

只是检查是否在浏览器中定义了符号XMLHttpRequest,以此作为查看此浏览器是否本机支持Ajax调用的方法。

如果没有,它将回归专有的Microsoft实施。如果定义了xmlHttpRequest,则typeof XMLHttpRequest的值为“function”,而不是“undefined”。

举个例子:

var x = 3;

console.log(typeof x);    // "number"
console.log(typeof y);    // "undefined"

// And, in any modern browser
console.log(typeof XMLHttpRequest);  // "function"

// In IE6
console.log(typeof XMLHttpRequest);  // "undefined"

XMLHttpRequest存在的此类检查适用于非常旧的Microsoft浏览器(IE6及更早版本),不再需要,可以安全删除。