class Abc{
private arrayVariable1 = [];
private arrayVariable2 = undefined;
}
对于arrayVariable1,它默认初始化为空数组,后面的元素被推入其中。 对于arrrayVariable2,默认情况下它是未定义的,后来更改为数组,并将元素推送到它。 与arrayVariable2相比,arrayVariable1是否占用内存?
答案 0 :(得分:1)
没有! ;)
这种优化不会带来太大的影响,应该优先考虑显示意图并尽可能强制执行不变性。
要执行此操作,请键入变量并将其设为只读
class Abc{
private readonly arrayVariable1: string[];
constructor() {
arrayVariable1 = []
}
}
readonly
仅在编译时实施,但可以很好地防止错误的分配进一步下载
答案 1 :(得分:0)
(免责声明:我在微软工作时参与了Chakra JavaScript引擎)
与arrayVariable2相比,arrayVariable1是否占用内存?
是的,由于内部undefined
对象状态和初始化,空数组使用的内存多于null
或Array
。
鉴于微优化的性能影响,例如延迟初始化属性可以忽略不计,并且必然会增加代码复杂性成本(如您的示例所示,您需要检查arrayVariable
是否都不是 - undefined
而不是 - null
当您的代码可能首先向列表添加值时。如果您使用{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ 1}}。
关于您对= []
的使用:如果您想要定义"取消设置,请使用private arrayVariable2 = undefined
。或清空初始属性值。 null
有一些特殊规则,使用它可以轻松拍摄自己:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined - 在undefined
中使用undefined
会适得其反,因为您和#39;重新取消类的性能优势,而不是运行时定义的原型对象。