Array.size()与Array.length

两者有什么区别?

所以我知道array.size()是一个函数,而array.length是一个属性。 有没有使用一个在另一个的用例? 是更有效率的(我会想象.length是明显更快,因为它是一个属性,而不是一个方法调用?)为什么会使用较慢的选项? 是否有一些浏览器与其中一个不兼容?

  var x = []; console.log(x.size()); console.log(x.length); console.log(x.size()==x.length); x =[1,2,3]; console.log(x.size()); console.log(x.length); console.log(x.size()==x.length); 

将打印:

  0, 0, true 3, 3, true 

Array.size()不是一个有效的方法

始终使用长度属性

有一个库或脚本将大小方法添加到数组原型,因为这不是本地数组方法。 这通常是为了增加对自定义getter的支持。 使用这个的一个例子是,当你想获得一个数组的内存大小(这是我能想到的唯一的事情将是有用的这个名字)。

Underscore.js不幸的是定义了一个size方法,它实际上返回一个对象或数组的长度。 由于不幸的是函数的长度属性被定义为命名参数的数量,函数声明他们不得不使用一个替代,并select了大小(计数将是一个更好的select)。

.size() 不是 Array的本地JS函数(至less不是我所知道的任何浏览器)。

应该使用.length


如果

.size()可以在你的页面工作,确保你没有任何额外的库,包括像Array原型一样的原型。

要么

浏览器中可能会有一些插件使用Array原型。

.size()是在Jquery和其他许多其他的lib

只有当键是数字时。 长度不适用于string键

.length适合这种types的数组

 var nums () = new Array (); nums [ 0 ] = 1 ; nums [ 1 ] = 2 ; print ( nums . length ); // displays 2 

.length不能像这个数组一样工作

  var pbook = new Array (); pbook [ "David" ] = 1 ; pbook [ "Jennifer" ] = 2 ; print ( pbook . length ); // displays 0 

.size()是jQuery的,很可能你会混淆或者从别人那里把jQuery库导入到他的项目中。

如果你有jQuery导入,你会像$(array).size()那样写,它会返回数组的长度。

array.length不一定是数组中的项目数量:

 var a = ['car1', 'car2', 'car3']; a[100] = 'car100'; a.length; // 101 

数组的长度比最高索引多一个。

如前所述Array.size()不是一个有效的方法。

更多信息