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

Unc*_*lug 11 javascript arrays

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

var x = y.length;

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

jos*_*736 12

没有.

物业规格length:

length此阵列对象的属性是一个数据属性,其值总是数值上比每个可删除的属性,其名称是一个数组索引的名称更大.

不能有-1个属性.

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

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

  • @ UncleSlug- [*w3schools*](http://www.w3fools.com/)是一个非常普通的网站,不信任它. (6认同)
  • 我在 w3schools 上读过:“返回值:一个数字,表示数组对象中的元素数”,它不像你的源代码那么明确。这就是导致我的问题的原因。 (2认同)

pot*_*ngs 5

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

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

alert(b instanceof Array)
alert(b.length);
Run Code Online (Sandbox Code Playgroud)