Javascript 了解Java脚本中变量类型的更好方法是什么
如果我有一个变量var a,我想检查它是否是array类型,我可以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);
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
vsconstructor
@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)