知识卡片

初始化显式维度

普通读书笔记卡 · 1494.c

内容

数组默认不预置值,访问未赋值元素得 undefined;算法假设每个元素有初始值时须显式创建填充数组。多维数组同理:JS 没有原生多维数组,只能用”数组的数组”模拟,须逐层显式创建每一维——让每个元素共享同一子数组引用是错误做法,会导致改一行影响所有行。发散:嵌套结构最好用工厂函数按需生成独立实例,避免共享默认子对象引发联动 bug。

参考来源

- 位置:《JavaScript语言精粹(修订版)》第6章《数组 Arrays》"指定初始值"一节 - 结论依据:原文说明数组默认不预置值,需要自定义 Array.dim 显式填充初始值,并特别警告"Array.dim(n, [])在这里不能工作……如果使用它,每个元素都指向同一个数组的引用,那后果不堪设想",据此推出多维数组必须逐层显式创建、不能共享同一个子数组引用的结论。 - 原始内容:JavaScript的数组通常不会预置值……如果你实现的算法是假设每个元素都从一个已知的值开始(例如0),那么你必须自己准备好这个数组……注意:Array.dim(n, [])在这里不能工作。如果使用它,每个元素都指向同一个数组的引用,那后果不堪设想。