2016-09-09 9 views
0

私はこれを探していましたが、私が望むだけの簡単な質問は見つかりませんでした。問題は本当にシンプルです:角度jでは、ローカル変数、またはこれのプロパティを使用する必要があります(これを使用する必要がない場合)。角度 - ローカル変数or this.variableを使用する必要があります

例:

// I need "this" here because I need this collection in template 
this.collection = SomeService.fetchCollection(); 

// I can use either "foo" or "this.foo" here, which one is better? 
this.fetchSomeData = function(type) { 
    var foo = AnotherService.foo(type); 
    return FooService.call(foo); 
} 

答えて

0

ローカル変数なので、それは、すぐにメソッドが終了するようにクリーンアップすることができます。さもなければ、それは親の名前空間で未使用のままになります。

しかし、実際の効果がないケースの99%で、問題ではありません。私の意見では

0

すべてを明らかにし、それがカプセル化された保つためにはない良い方法です - 例えば、それはあなたがi変数の上forループの繰り返しを持っていることを考慮し、

も悪いかを表示するためのロジックを動かす回避します - そのような目的でthis.iも使用しますか?

1

varとして 'foo'を宣言していないので、ここではグローバルになりますが悪いです。少なくとも「var」という接頭辞が付いているので、関数にスコープが設定され、グローバルにはなりません。関数の外部では使用できません。

+0

私は日常的にcoffescriptを使用していますので、 "var"を忘れてしまいました。それはそこにあるはずです – blisher

+1

その場合は問題ありません。後で別の方法でそれを必要としない限り、「this」に追加する必要はありません。正直言って、私はおそらくそれをそうインラインにするだろう: 返すFooService.call(AnotherService.foo(type)); でも、その悪い習慣を考える人もいます。 – JSFrank

+0

このケースをインライン展開するとスパゲッティは作成されませんが、コードの長い行を処理する必要があり、インライン展開すると実際に長い行が作成されることがあります – blisher

関連する問題