2015-09-18 3 views
3

Мне просто интересно, есть ли более быстрый способ написать это?Более короткие вложенные операторы if?

if (name == '' && distance == '') { 
     y = 2; 
    } 

    else if (name == '' && distance < 1) { 
     y = 2; 
    } 

Я знаю, что могу просто поставить их на той же линии, но есть более простой способ, в котором я не должен переписать «название ==„“» часть во второй раз? Вроде как это:

if (name == '' && (distance == '' || distance < 1)) { 
     y = 2; 
    } 

В которой расстояние часть будет оцениваться первым, и если один из этих параметров выполняется, то имя == «» часть будет сверяться с ней.

ответ

4

На самом деле, в JavaScript '' < 1 === true, так что вы можете просто сделать:

if (name == '' && distance < 1) { 
    y = 2; 
} 
+0

О, ничего себе, не знал этого. Благодаря! –

+0

Также javascript использует булевые операторы коротких замыканий, поэтому для «В какой части расстояния сначала будет оцениваться, и если один из этих параметров будет выполнен, то имя == '' будет проверяться вместе с ним». вы можете поменять порядок следующим образом: 'if (distance <1 && name == '')' такое, что сначала оценивается расстояние, и только перемещается в имя, если проверка расстояния оценивается как истина. –

0

Я бы написал так:

if (name === '') { 
    if (distance === '') { 
     // do stuff 
    } else { 
     if (distance < 1) { 
      // do stuff 
     } 
    } 
} 

Пустое имя является общим для обоих условий, так что если он пуст, то продолжают испытывать на расстоянии.

Лучше написать немного больше кода, если это упростит понимание.

Короткие и загадочные с трудом работать с ними позже.

+1

Согласен: самый короткий код не всегда является самым легким для чтения или позже вернуться и изменить. Однако в этом очень простом случае я бы сказал, что короче лучше. –

1
if (name == ' ') 
{ 
    if(distance == ' ') 
    { 
     y==2 
    } 
    else if(distance < 1) 
    { 
     y=2 
    } 

} 

Simpler, но цель по-прежнему очевидна.

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