当JavaScript数组长度属性返回负值时,是否会有实例?我假设答案是否定的,但我想知道在比较if语句中的数组长度时是否需要考虑负值。
var x = y.length;
if (x === 0) {
return false;
} else if (x > 0) {
return true;
} else alert("error"); // is this necessary?
}
答案 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位的无符号整数。 如果它是未签名的,那么它不能是否定的。