2015-02-19 2 views
1

У меня есть следующий код:JavaScript, если оптимизация оператора

 function() { 
     if (foo && foo.bar !== baz) { //needed because foo can be undefined, so foo.bar always returns value 
      function1() 
      return; 
     } 

     if (foo) { 
      function2() 
     } else { 
      function1() 
     } 
     } 

мне было интересно, что было бы лучшим способом оптимизировать их, если заявления, от структуры коды точки зрения.

Спасибо за все ответы!

+0

Это относится к [Обзор кодов] (http://codereview.stackexchange.com). – Mathletics

+1

Попробуйте 'foo && foo.baz === baz? function2(): function1() '. –

+3

Преждевременная оптимизация - это корень всего зла. Не тратьте впустую свое время на это, если ваше профилирование не определило, что это узкое место. – Barmar

ответ

1

Это может быть превращена в однострочника:

foo && foo.baz === baz ? function2() : function1(); 

Если foo является falsey, то он будет выполнять function1 и если foo является truthy но foo.baz !== baz то он все равно выполнит function1. В противном случае он выполнит function2.

Причина это работает, потому что если foo является truthy и foo.baz !== baz является false то function2 выполняется только если foo.baz === baz является true.

1

Может быть:

if ((foo && foo.bar !== baz) || !foo) { 
    function1(); 
} else { 
    function2(); 
} 
1
((foo && foo.bar !== baz) || !foo) ? funtion1() : function2()); 
1

Примером может быть:

if (!foo || foo.bar !== baz) { 
    function1(); 
} else { 
    function2(); 
} 

Подобно одному kamituel, но короче, и, возможно, легче читать.

+0

О да, я на самом деле этого не заметил;) +1 – kamituel

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