2016-01-10 1 views
13

Есть ли смысл разница междуОднострочная, если против && в JavaScript

condition && console.log("this may run"); 

и

if (condition) console.log("this may run); 

Если нет, что является наилучшей практики?

+0

Родственные: * [JavaScript одиночная строка «если» - лучший синтаксис, эта альтернатива?] (Http: // stackoverflow.com/questions/8860654/javascript-single-line-if-statement-best-syntax-this-alternative/8860674 # 8860674) * –

+1

Очень редко используется '&&', если вы не присваиваете выражение чему-либо. – Sulthan

ответ

7

Вы должны использовать второй.

Ваш код должен сказать, что это значит. Это то, что имеется в виду, написав «семантический» код. Если вы пишете условие if, вы должны использовать оператор if, потому что для этого он существует. Код && является семантически логическим и должен использоваться в тех случаях, когда вас интересует логическое значение, полученное в результате логической конъюнкции двух значений.

Написание семантического кода, как предлагали другие ответы, упрощает создание и понимание и поддержку. Что касается этого комментария:

Если кому-то еще может понадобиться его прочитать или сохранить, используйте второй.

Помните, что «вы через полгода» «кто-то еще».

Вот некоторые конкретные причины для использования if, когда вы имеете в виду if:

  1. Если вы хотите добавить else статью, вы можете просто добавить его. Если вы написали a && b, вам придется переписать его как a ? b : c.

  2. Предполагая, что вы использовали фигурные скобки, как в if (a) { b; }, тогда вы можете легко добавить еще один шаг к телу, написав if (a) { b; c; }. Если вы написали a && b, вам нужно будет переписать это как a && (b, c) или что-то подобное; это даже не возможно в некоторых случаях, если c не может функционировать как выражение.

  3. Некоторые литеры будут (разумно) жаловаться на a && b.

Обратите внимание, что minifiers обычно преобразует ваш второй пример в первый, так что если обоснование для использования && это сохранить байт, они будут сохранены в любом случае с помощью Minifier.

13

Нет такой разницы, но вы можете сказать, что первая - это сокращенная запись более поздней.

Я предлагаю вам использовать более поздние условия, это делает код более объясним, создавая те же результаты и почти с таким же количеством символов.

+1

Но ** ** есть разница, по определению, в самых разных отношениях, за исключением поведения. –

4

Если вы только можете сохранить код, используйте тот, который вам нравится.

Если кому-то еще может понадобиться прочитать или сохранить его, используйте второй.