2016-11-25 63 views
0

我整個代碼上的一些代碼斜坡,發現這種結構多次:y && y.someProp && y.someFunction();X && x.foo()&& x.bar()在JavaScript語法 - 這是什麼意思

$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

基本上只是使用短路的簡寫方法,以確保您不會在null或未定義的對象上調用該方法。如果y是falsey,則不調用y.foo()。

y && y.foo(); 

在功能上做同樣的

if (y) y.foo();