我想在JavaScript中检查一个变量是数组还是单值。
我已经找到了一个可能的解决方案...
if (variable.constructor == Array)...
这是最好的方法吗?
你也可以使用。
if (value instanceof Array) {
alert('value is Array!');
} else {
alert('Not an array');
}
这在我看来是一个相当优雅的解决方案,但各人有各人的看法。
编辑。
从ES5开始,现在也有了。
Array.isArray(value);
但这在旧的浏览器上会失效,除非你使用polyfills(基本上......IE8或类似)。
有多种解决方案,都有各自的怪癖。本页给出了一个很好的概述。一个可能的解决方案是。
function isArray(o) {
return Object.prototype.toString.call(o) === '[object Array]';
}
通过Crockford。
function typeOf(value) {
var s = typeof value;
if (s === 'object') {
if (value) {
if (value instanceof Array) {
s = 'array';
}
} else {
s = 'null';
}
}
return s;
}
Crockford提到的主要故障是无法正确判断在不同上下文中创建的数组,例如:`window'。
如果这还不够,该页面有一个更复杂的版本。