2016-11-25 2 views
0

私は、コード全体を複数回いくつかのコードの上にランプアップすると、この構造を発見しています:y && y.someProp && y.someFunction();のx && x.foo()&& x.bar()構文 - それは何を意味し

$rootScope.funct = function() { 
     $timeout(function() { 
     var y = service.doSomething(); 
     y && y.someProp && y.someFunction(); 
     }); 
    } else { 
     var y = service.doSomething(); 
     y && y.doSomethingElse(); 
    } 
    }; 

これの目的は何ですか? y && something elseの両方が完了していないか、そうでなければ偽である場合、プログラムの実行を停止しますか?

答えて

1

これは、次の省略形です:

if (y && y.someProp) { 
    y.someFunction() // Call someFunction 
} 

yがfalsyない値を持っており、y.somePropがfalsyないのであれば、それはsomeFunction関数を呼び出します。いくつかは好きで他は好きではないという簡略表記です。

0

短絡を使用してヌルオブジェクトまたは未定義オブジェクトでメソッドを呼び出さないようにするには、基本的には簡略化した方法です。 yがfalseの場合、y.foo()は呼び出されません。

y && y.foo(); 

は、機能的には

if (y) y.foo(); 
と同じことをやっている
関連する問題