繁体   English   中英

JS数组长度属性是否会返回负值?

[英]Can the JS array length property ever return a negative value?

当JavaScript数组长度属性返回负值时,是否会有一个实例? 我假设答案是否定的,但我想知道在比较if语句中的数组长度时是否需要考虑负值。

var x = y.length;

if (x === 0) {
    return false;
  } else if (x > 0) {
    return true;
  } else alert("error"); // is this necessary?
}

没有。

length属性规范说

此Array对象的length属性是一个data属性,其值始终在数字上大于名称为数组索引的每个deletable属性的名称。

不能有-1个属性。

此外,更明确地说, Array规范说

每个Array对象都有一个length属性,其值始终是小于2 32的非负整数。

更新:答案仍然适用于ES2020

通常不会(正如其他答案所指出的那样),但是作为数组实例的对象可以具有称为length的负属性

var b = Object.create([]);
b.length = -1;

alert(b instanceof Array)
alert(b.length);

不,它不能。 而且,如果你尝试这样做arr.length = -1它会抛出异常

不,它不能。 MDN说:

length属性的值是一个整数,带有正号,值小于2到32次幂(232)。

正如Mozilla开发人员网站( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length )所述,“length属性表示一个无符号的32位整数,指定数组中元素的数量。“ 如您所见,它是32位的无符号整数。 如果它是未签名的,那么它不能是否定的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM