- 注意点1: 和其他编程语言不同, 如果数组对应的索引号中没有存储数据, 默认存储的是undefined, 其他编程语言中默认保存的是垃圾数据或者是0
let arr = new Array(3);
console.log(arr[0]); // undefined
console.log(arr[1]); // undefined
console.log(arr[2]); // undefined
- 注意点2: 和其他编程语言不同, JavaScript中访问了数组中不存在的索引不会报错, 会返回undefined, 其他编程语言一旦超出索引范围就会报错或者返回脏数据
let arr = new Array(3); // 0 1 2
console.log(arr[666]); // undefined
- 注意点3: 和其他编程语言不同, 当JavaScript数组的存储空间不够时数组会自动扩容, 其他编程语言中数组的大小是固定的
let arr = new Array(3);
arr[0] = "lnj";
arr[1] = "zs";
arr[2] = "ls";
arr[3] = "it666";
console.log(arr);
- 注意点4: 和其他编程语言不同, JavaScript的数组可以存储不同类型数据, 在其他编程语言中数组只能存储相同类型数据(要么全部都是字符串, 要么全部都是数值等)
let arr = new Array(4);
arr[0] = 123;
arr[1] = "123";
arr[2] = true;
arr[3] = null;
console.log(arr);
- 注意点5: 和其他编程语言不同, JavaScript中数组分配的存储空间不一定是连续的
其他语言数组分配的存储空间是连续的, JavaScript数组是采用"哈希映射"方式分配存储空间
什么是"哈希映射"? 好比字典可以通过偏旁部首找到对应汉子, 我们可以通过索引找到对应空间
在浏览器中各大浏览器也会对数组分配存储空间进行了优化
如果存储的都是相同类型的数据, 那么会尽量分配连续的存储空间
如果存储的不是相同类型的数据, 那么就不会分配连续的存储空间