2015-12-15 13 views
8

O ile mi zrozumieć, zwarcie z logicznym I & & operatora działa jak następuje:zwarcie z instrukcji return

Zakładając mam wyrażenia a i b następnie a && b jest taka sama jak a ? b : a od

jeśli a jest truthy wtedy wynik będzie b i jeśli a jest falsy wtedy wynik będzie a (nawet nie próbuje rozwiązać b)

Skoro tak, dlaczego jest następujący (demo) kod rzuca SyntaxError:

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

Czy istnieje sposób do zwarcia z instrukcji return?

Odpowiedz

11

Operator binarny && potrzebuje obu części jako wyrażeń.

return something jest instrukcją, ale nie wyrażeniem (nie tworzy wartości, ponieważ wartość nie byłaby przydatna, gdy funkcja się kończy).

Wystarczy użyć

if (b) return a+b; 

z dodatkową korzyścią jest łatwiejszy do odczytania kodu.

Więcej:

2

Nie, return jest stwierdzenie, nie można go używać jako część wyrażenie AND.

można przekształcić swój kod do pojedynczego return rachunku choć jeśli trzeba, że ​​z jakiegoś powodu:

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

jest (bardziej lub mniej) równoważne

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

Oczywiście, w żadnym kod, który piszesz ręcznie i czytasz oczami, tak czy inaczej, you should just an if statement.

Powiązane problemy