2015-12-15 3 views
8

Насколько я понимаю, короткое замыкание с логическим И & & оператора работает как в следующем:короткого замыкания с обратным утверждением

Предполагая, что у меня есть выражения a и b затем 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 
    ... 
} 

Есть ли способ короткое замыкание с обратным утверждением?

ответ

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 в любом случае.