Arrayï¼length
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
length æ¯ Array çå®ä¾å±æ§ï¼è¡¨ç¤ºè¯¥æ°ç»ä¸å
ç´ ç个æ°ãè¯¥å¼æ¯ä¸ä¸ªæ ç¬¦å· 32 使´æ°ï¼å¹¶ä¸å
¶æ°å¼æ»æ¯å¤§äºæ°ç»æå¤§ç´¢å¼ã
å°è¯ä¸ä¸
const clothing = ["shoes", "shirts", "socks", "sweaters"];
console.log(clothing.length);
// Expected output: 4
å¼
ä¸ä¸ªå°äº 232 çéè´æ´æ°ã
Arrayï¼length ç屿§ç¹æ§ | |
|---|---|
| å¯å | æ¯ |
| 坿䏾 | å¦ |
| å¯é ç½® | å¦ |
æè¿°
length 屿§ç弿¯ä¸ä¸ªå°äº 232 çéè´æ´æ°
const listA = [1, 2, 3];
const listB = new Array(6);
console.log(listA.length);
// 3
console.log(listB.length);
// 6
listB.length = 2 ** 32; // 4294967296
// RangeError: Invalid array length
const listC = new Array(-100); // è´æ°æ¯ä¸å
许ç
// RangeError: Invalid array length
æ°ç»å¯¹è±¡ä¼è§å¯ length 屿§ï¼å¹¶èªå¨å° length å¼ä¸æ°ç»çå
容忥ãè¿æå³çï¼
- 设置
lengthå°äºå½åé¿åº¦çå¼å°ä¼æªææ°ç»ââè¶ è¿æ°lengthçå ç´ å°è¢«å é¤ã - 设置è¶
è¿å½å
lengthç任使°ç»ç´¢å¼ï¼å°äº 232 çéè´æ´æ°ï¼å°ä¼æ©å±æ°ç»ââlength屿§å¢å ä»¥åæ æ°çæé«ç´¢å¼ã - å°
lengthè®¾ç½®ä¸ºæ æå¼ï¼ä¾å¦è´æ°æéæ´æ°ï¼ä¼å¼åRangeErrorå¼å¸¸ã
å½ length 被设置为æ¯å½åé¿åº¦æ´å¤§ç弿¶ï¼æ°ç»éè¿æ·»å ç©ºæ§½æ¥æ©å±ï¼è䏿¯å®é
ç undefined å¼ãç©ºæ§½ä¸æ°ç»æ¹æ³æä¸äºç¹æ®ç交äºä½ç¨ï¼è¯¦è§æ°ç»æ¹æ³å空槽ã
const arr = [1, 2];
console.log(arr);
// [ 1, 2 ]
arr.length = 5; // å°æ°ç»é¿åº¦è®¾ç½®ä¸º 5ï¼èå½å为 2ã
console.log(arr);
// [ 1, 2, <3 empty items> ]
arr.forEach((element) => console.log(element));
// 1
// 2
å¦è¯·åé
ï¼length 䏿°å¼å±æ§çå
³ç³»ã
示ä¾
>éåæ°ç»
å¨ä¸é¢ç示ä¾ä¸ï¼éè¿æ¥ç length 屿§æ¥éåæ°ç» numbersãç¶åå°æ¯ä¸ªå
ç´ ä¸çå¼å åã
const numbers = [1, 2, 3, 4, 5];
const length = numbers.length;
for (let i = 0; i < length; i++) {
numbers[i] *= 2;
}
// éååçç»æ [2, 4, 6, 8, 10]
æªææ°ç»
å¨ä¸é¢ç示ä¾ä¸ï¼å¦æå½åé¿åº¦å¤§äº 3ï¼æ°ç» numbers å°ä¼ç¼©ç为 3ã
const numbers = [1, 2, 3, 4, 5];
if (numbers.length > 3) {
numbers.length = 3;
}
console.log(numbers); // [1, 2, 3]
console.log(numbers.length); // 3
console.log(numbers[3]); // undefinedï¼å¤ä½çå
ç´ ä¼è¢«å é¤
å建åºå®é¿åº¦ç空æ°ç»
å° length 设置为大äºå½åé¿åº¦çå¼å°ä¼å建ä¸ä¸ªç¨çæ°ç»ã
const numbers = [];
numbers.length = 3;
console.log(numbers); // [empty x 3]
é¿åº¦ä¸å¯åçæ°ç»
彿·»å çå
ç´ è¶
è¿å½åé¿åº¦æ¶ï¼æ°ç»ä¼èªå¨æ´æ° length 屿§ã妿 length 屿§è®¾ç½®ä¸ºä¸å¯åï¼åæ°ç»å°æ æ³æ´æ°å®ãå¨ä¸¥æ ¼æ¨¡å¼ä¸è¿ä¼å¯¼è´é误ã
"use strict";
const numbers = [1, 2, 3, 4, 5];
Object.defineProperty(numbers, "length", { writable: false });
numbers[5] = 6; // TypeError: Cannot assign to read only property 'length' of object '[object Array]'
numbers.push(5); // // TypeError: Cannot assign to read only property 'length' of object '[object Array]'
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-properties-of-array-instances-length> |