2017-02-09 4 views
-1
class Abc{ 
private arrayVariable1 = []; 
private arrayVariable2 = undefined; 
} 

arrayVariable1の場合、デフォルトでは空の配列に初期化され、後の要素はその配列にプッシュされます。 arrrayVariable2の場合、デフォルトでは未定義であり、後で配列と要素にプッシュされます。 arrayVariable1は、arrayVariable2と比較して空の場合でもメモリを使用しますか?これらのコーディング戦略のうち、どれがタイプスクリプトで優れているのですか?

答えて

1

なし! ;)

この最適化はあまりもたらすものではなく、意図を示し、不変性を可能な限り強制することに優先順位を設定する必要があります。これを行うには、変数を入力し、それが読み取り専用

class Abc{ 
    private readonly arrayVariable1: string[]; 

    constructor() { 
     arrayVariable1 = [] 
    } 
} 

readonlyだけは本当にコンパイル時に強制されているが、さらに下

0

(免責事項:私はしばらくの間、マイクロソフトでチャクラJavaScriptエンジンで働いていた)

んarrayVariable1がarrayVariable2と比較して、それが空の場合でも、メモリを取りますか?

はい、空の配列があるため内部Arrayオブジェクトの状態と初期化のundefined又はnull値よりも多くのメモリを使用します。

資産の遅延初期化などのマイクロ最適化のパフォーマンスへの影響を無視すると、コード複雑性のコストがかかります(例のように、arrayVariableが-undefinedではないかどうかを確認する必要があります) - nullあなたのコードは、最初のリストに値を追加することができますあなたは= []を使用して空の配列にプロパティを熱心に初期化した場合のコードは、後続のプログラマに、より読みやすく、理解しやすいだろう

private arrayVariable2 = undefinedのご利用について:あなた。 「未設定」または空の初期プロパティ値を定義する場合は、代わりにnullを使用する必要があります。undefinedには特別なルールがあります。あなたがランタイムで定義されたプロトタイプオブジェクトではなく、クラスのパフォーマンス上の利点を元に戻しているので、のundefinedを使用すると、生産性が低下します。

+0

間違っ割り当てに対して良好な保護であることを確認する

は、あなたが問題に手の込んだことができます非最適化を引き起こすインスタンスメンバに 'undefined'を使用していますか? –

関連する問題