2015-06-03 1 views
0

Что лучше писать foo()?
foo1() или foo2()?
лучше с точки зрения:Чтобы объявить или нет локальные переменные в JavaScript

  1. Performance
  2. потребление памяти
  3. Variable/Объект энтропии

Если предположить, что другие факторы заботятся.
например: переменная не используется в нескольких местах в пределах функции и т.д.

 function f1() { 
      return 10; 
     } 

     function f2() { 
      return 20; 
     } 

     function foo1() { 
      return f1() === f2(); 
     } 

     function foo2() { 
      var i = f1(); 
      var j = f2(); 
      return i === j; 
     } 
+2

Посмотрите сами; http://jsperf.com/so-30611329 –

+2

Потребление памяти будет только кратковременным, поэтому вряд ли какая-либо значимая разница там. Производительность также, вероятно, не сильно отличается, хотя 'foo1()' может иметь крошечное преимущество. Различия здесь настолько маловероятны, чтобы быть значительными, что вы должны написать код таким образом, чтобы сделать его самым чистым и легким для понимания и поддержки. Если это все, то для этого я не вижу преимущества 'foo2()' over 'foo1()', поэтому я бы пошел с более компактным 'foo1()'. – jfriend00

+0

Какое определение энтропии вы используете? – Bergi

ответ

0

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

Для выполнения, как было упомянуто на комментарий Вы можете использовать jsPerf ..

для потребления памяти, я считаю, foo1() лучше, потому что вам не нужно создавать новую переменную.

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

Надеюсь, это поможет.

0

Это на самом деле зависит от многого.

foo1() - Если вам нужно использовать f1() и f2() только в функции, тогда foo1() будет лучше. Поскольку использование дополнительных переменных для сохранения одинаковых результатов не имеет никакого смысла, а также они покрывают некоторую память (очень маленькая сумма). Таким образом, эту дополнительную стоимость можно устранить, используя функции напрямую.

foo2() - Если использовать f1() и f2() несколько раз в функции, то foo2() будет лучше, хранящим значения функции в одной переменной и использовать его много раз, было бы гораздо лучше, чем вызов функции снова и снова те же результаты , Но да, если ваши функции содержат логику, а результат функции может меняться в любое время, то, очевидно, вам нужно будет каждый раз вызывать функцию.

+0

"* Предполагая, что переменная не используется в нескольких местах внутри функции *" – Bergi

+0

Все еще отвечает на вопрос - foo1() лучше – Puneet

+0

Но вы не даете никаких причин почему? – Bergi

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