这是用于检查isarray的最佳方法

时间:2013-10-05 10:11:31

标签: javascript

我想检查变量是否为数组?

这是用于获得更好性能的最佳方法。

isArray

instanceof

2 个答案:

答案 0 :(得分:3)

大家伙(Jquery,下划线)这样做:

  isArray = Array.isArray || function(obj) {
    return Object.prototype.toString.call(obj) == '[object Array]';
  };

这些不是你正在寻找的机器人你实际上根本不需要它。不要“检查”你的变量 - 只要知道它们。

答案 1 :(得分:2)

使用Array.IsArray会更好。

同时检查此instanceof considered harmful (or how to write a robust isArray)

  

在多帧DOM中编写脚本时会出现问题   环境。简而言之,在一个iframe中创建的Array对象   不要与另一个中创建的数组共享[[Prototype]]   iframe中。他们的构造函数是不同的对象,所以两者   instanceof和构造函数检查失败:

你也可以检查两者之间的速度变化,你会发现isArray相对更快。

以下是检查以下内容的链接: - Array.isArray vs instanceof Array

以下代码用于检查速度变化:

<script>
  Benchmark.prototype.setup = function() {
    var a = [1, 2, 3];
    var s = 'example';
    var f = false;
  };
</script>

使用Array.IsArray:

(Array.isArray(a) && (Array.isArray(s) || Array.isArray(f)));

它几乎 25,255,693 ops / sec

现在使用instanceof: -

 (a instanceof Array && (s instanceof Array || f instanceof Array));

它几乎 21,594,618 ops / sec

即, instanceOf比使用IsArray慢15%。