2015-12-15 45 views
8

據我瞭解,與邏輯與& &運營商短路短路工作方式類似以下內容:用一個return語句

假設我有表達ab然後a && b相同a ? b : a

如果a是truthy那麼結果將是b和 如果a是falsy那麼結果將是a(甚至沒有試圖解決b

這是爲什麼以下(演示)代碼拋出一個SyntaxError的情況:

var add = function(a,b) { 
    b && return a+b; // if(b) return a+b 
    ... 
} 

有沒有辦法用一個return語句短路?

回答

11

&&二元運算符需要兩部分都是表達式

return something是一個語句,但不是一個表達式(它不會產生一個值,因爲函數結束時該值不會有用)。

只需使用

if (b) return a+b; 

有一個更簡單的額外的好處來讀取代碼。

瞭解更多:

2

沒有,return是一個語句,你不能把它作爲一個組成部分AND表達式。

但如果你需要,由於某種原因,您可以將您的代碼到一個return聲明:

if (b) return a+b; 
/* else */ ... 

是(或多或少),相當於

return b && a+b || (...); 

當然,在任何代碼,你手寫和讀你的眼睛,you should just an if statement無論如何。