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

时间:2015-09-03 22:13:20

标签: 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?
}

5 个答案:

答案 0 :(得分:11)

没有

spec for the length property says

  

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

不能有-1个属性。

此外,更明确地说,spec for Array says

  

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

答案 1 :(得分:5)

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

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:2)

不,不能。 MDN says:

  

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

答案 4 :(得分:0)

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