2015-10-29 2 views
-1

Функция fnc() возвращает либо элемент DOM, либо null. Это вызвано из другой функции, где, когда возвращается null, больше нечего делать.Возврат с оператором 'if' или логическим ИЛИ в Javascript

утратившим всегда будет оценивать как ложное и объекта, как верно следующее будет работать:

var parentResult = fnc(arg) || return false; 
var childResult = fnc(parentResult.id) || return false; 

Но я никогда не видел такого рода синтаксис, используемый в Javascript, вместо этого он всегда, кажется, записывается в виде (дать или принять форматирование var ключевых слов и явного === null в состоянии):

var parentResult = fnc(arg); 
if(!parentResult) { return false }; 
var childResult = fnc(parentResult.id); 
if(!childResult) { return false }; 

Для меня бывшего является опрятнее и более читаемым в результате, но должна быть причиной, не используются.

Таким образом, можно полагаться на возвращаемое значение fnc(), есть ли веская причина не использовать логические ИЛИ для прекращения функции, а не для отдельных операторов if?

+0

Для меня if был бы более читабельным в этом примере. Новичок (я не знаю, будет ли этот код рассматриваться новичками/стартерами) не будет понимать этот код. –

+1

Я чувствую, что это всего лишь стрессовая тема, но какой JavaScript вы читали? Если вы посмотрите на исходный код некоторых библиотек, это повсюду. –

+0

Еще более «умный» способ: 'parentResult = fnc (arg) && childResult = fnc (parentResult.id) || return false; ' Но в целом этот стиль нахмурился. –

ответ

3

Вы не видите первый пример, используемый в любом месте, поскольку он недействителен JavaScript. return является заявлением , он не может быть частью выражения (||).

+0

Вопрос имеет ошибку, но это не отвечает на вопрос. Это должен быть комментарий. – Goose

+0

@Goose: как это не отвечает на вопрос? Он не используется, потому что он недействителен. Почему, по-вашему, он не используется? –

+0

Я верю, что его вопрос скорее о том, если vs ||, а не о возврате в частности. – Goose

0

Для большинства людей, чем больше исходный код следует естественному языку, тем он читабельнее/понятно. Длительная нотация больше похожа на естественный язык: «выполните функцию, а затем, если результат равен нулю, остановите».

0

Я бы сказал, что логический ИЛИ используется довольно часто, и для короткой руки я предпочитаю его по одной строке, если утверждение, если возможно. Есть много причин, по которым кто-то может вместо этого использовать инструкцию if.

  • Считываемость. Это ближе к естественному языку.
  • Расширяемый. Если условное или результирующее действие нужно развернуть, и если нужно будет использовать оператор.
  • Консистенция. Возможно, код вокруг него использует операторы if, а логический OR просто выглядит неуместно.
  • Невежество. Я не знал о логическом ИЛИ до 6 месяцев до кодирования.

Это определенно индивидуальный выбор, если оба они дают одинаковый результат.

1

Это является недопустимым, вы не можете иметь «возвращение» в рамках уступки:

var parentResult = fnc(arg) || return false; 

Но это справедливо, и общая идиома:

var parentResult = fnc(arg) || false; 

Вы также можете сделать это:

var parentResult = !!fnc(arg); 

двойной взрыв преобразует значение в логическое значение - это своего рода трюк, так что некоторые из них будут говорить, что это плохо язь а.

Есть много вариантов.

+0

'var parentResult = !! fnc (arg)' не делает то же самое, что 'var parentResult = fnc (arg) || false'. В первом случае «parentResult» имеет либо «true», либо «false». Во втором случае 'parentResult' будет * объектом * или' false'. –

+0

Да, вы правы! Я хотел продемонстрировать аналогичную модель, но забыл, что в этом случае реальное значение должно быть назначено, если false - нет. – tragle

Смежные вопросы