哪些编码策略在打字稿中更好,为什么?

时间:2017-02-09 06:04:53

标签: typescript

class Abc{
 private arrayVariable1 = [];
 private arrayVariable2 = undefined;
 }

对于arrayVariable1,它默认初始化为空数组,后面的元素被推入其中。 对于arrrayVariable2,默认情况下它是未定义的,后来更改为数组,并将元素推送到它。 与arrayVariable2相比,arrayVariable1是否占用内存?

2 个答案:

答案 0 :(得分:1)

没有! ;)

这种优化不会带来太大的影响,应该优先考虑显示意图并尽可能强制执行不变性。

要执行此操作,请键入变量并将其设为只读

class Abc{
   private readonly arrayVariable1: string[];

   constructor() {
      arrayVariable1 = []
   }
}

readonly仅在编译时实施,但可以很好地防止错误的分配进一步下载

答案 1 :(得分:0)

(免责声明:我在微软工作时参与了Chakra JavaScript引擎)

  

与arrayVariable2相比,arrayVariable1是否占用内存?

是的,由于内部undefined对象状态和初始化,空数组使用的内存多于nullArray

鉴于微优化的性能影响,例如延迟初始化属性可以忽略不计,并且必然会增加代码复杂性成本(如您的示例所示,您需要检查arrayVariable是否都不是 - undefined而不是 - null当您的代码可能首先向列表添加值时。如果您使用{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ 1}}。

关于您对= []的使用:如果您想要定义"取消设置,请使用private arrayVariable2 = undefined。或清空初始属性值。 null有一些特殊规则,使用它可以轻松拍摄自己:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined - 在undefined中使用undefined会适得其反,因为您和#39;重新取消类的性能优势,而不是运行时定义的原型对象。