Javascript 了解Java脚本中变量类型的更好方法是什么

Javascript 了解Java脚本中变量类型的更好方法是什么,javascript,Javascript,如果我有一个变量var a,我想检查它是否是array类型,我可以 a.constructor === Array 或者 哪种方法更好?为什么?签出功能: Array.isArray(a); 更新:区别 var a = Object.create(Array.prototype); alert(a instanceof Array); //TRUE alert(a.constructor === Array);

如果我有一个变量var a,我想检查它是否是array类型,我可以

a.constructor === Array
或者

哪种方法更好?为什么?

签出功能:

Array.isArray(a);
更新:区别

var a = Object.create(Array.prototype);

alert(a instanceof Array);                       //TRUE
alert(a.constructor === Array);                  //TRUE  
if (typeof a === 'object' && Array.isArray(a)) { //FALSE 
    alert(true);
} 
else {
    alert(false);
}
但是你确实这样做了

var a = new Array();  // or var a = [];  etc

alert(a instanceof Array);                       //TRUE
alert(a.constructor === Array);                  //TRUE  
if (typeof a === 'object' && Array.isArray(a)) { //TRUE 
    alert(true);
} 
else {
    alert(false);
}

返回下面使用的变量类型

typeof(a)

typeof a可以使用,但我想知道这两种比较是如何工作的。我不是在寻找其他方法。我只是好奇这两种方法之间有什么区别,其中一种有什么缺点吗?StackOverflow是一个问答网站。当你问“我如何知道某物是否是数组”时,人们会回答这个问题。对于更具体的问题,还要检查链接的副本about
instanceof
vs
constructor
@avinashharma Yes,缺点是当
Array.isArray()
总是告诉您某个东西是否是数组时,
a.constructor==Array
a instanceof Array
在某些情况下都会失败().
typeof
不能满足问题的要求。如果您浏览标题,我已经给出了获取javascript中变量数据类型的选择,问题答案是正确的。
var a = new Array();  // or var a = [];  etc

alert(a instanceof Array);                       //TRUE
alert(a.constructor === Array);                  //TRUE  
if (typeof a === 'object' && Array.isArray(a)) { //TRUE 
    alert(true);
} 
else {
    alert(false);
}
typeof(a)