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()
不是一个有效的方法。
更多信息