Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверки перед присваиванием (https://javascript.ru/forum/misc/28343-proverki-pered-prisvaivaniem.html)

bes 16.05.2012 09:35

Проверки перед присваиванием
 
Одним из распространённых приёмов программирования является проверка на отсутствие в переменной некоторого значения перед присваиванием ей этого значения.

Иногда возникают ситуации, когда можно просто переприсвоить ей это значение, не проверяя есть ли оно там или нет (заведомо знаем, что есть).

Конечно, возникает мысль, что повторно выполняется присваивание переменной того же значения, которое в ней уже хранится, но эта мысль компенсируется тем, что если этого не делать, то придётся выполнять операцию проверки.

Разница в производительность этих двух операций не велика, так зачем тогда делать то, чего можно не делать.

Хотелось бы узнать, что это: просто стиль программирования или за этим стоят какие-нибудь другие объективные причины??

nerv_ 16.05.2012 09:41

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

melky 16.05.2012 09:59

Цитата:

Сообщение от bes (Сообщение 174706)
Одним из распространённых приёмов программирования является проверка на отсутствие в переменной некоторого значения перед присваиванием ей этого значения.

а зачем это делать? ну есть в ней значение, и хай с ним.

Цитата:

Сообщение от bes (Сообщение 174706)
Хотелось бы узнать, что это: просто стиль программирования или за этим стоят какие-нибудь другие объективные причины??

примеров кода бы. если я тебя правильно понял, то этот приём - полная дурость.(IMHO)

Цитата:

Сообщение от nerv_ (Сообщение 174707)
пример кода. На мой взгляд javascript в этом отношении вообще супер, в нем можно использовать логические операторы для присваивания значений.

ты хотел сказать, в выражение засунуть присваивание)

DreamTheater 16.05.2012 10:24

function test (options) {
    options = options || {};

    return options.test;
}

melky 16.05.2012 10:27

Цитата:

Сообщение от DreamTheater (Сообщение 174713)
options = options || {};

я неправильно понял :) что плохого в "значениях по умолчанию" ?

bes 16.05.2012 10:45

Цитата:

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

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

Например, я мог бы сделать так, каждый раз устанавливая заново значения style.background, вместо того, чтобы работать с запоминанием того элемента, который был нажат.

<div style="cursor: pointer"
  onclick="
    var span = this.getElementsByTagName('span');
    var dl = span.length;
    var target = event.srcElement || event.target;

    for (var i = 0; i < dl; i++) {
      if (target == span[i])
        span[i].style.background = 'green';
      else 
        span[i].style.background = 'yellow';
    }
">

<span>1</span>
<span>2</span>
<span>3</span>
</div>

bes 16.05.2012 10:49

Цитата:

Сообщение от melky
если я тебя правильно понял, то этот приём - полная дурость.(IMHO)

Так или не так это я и хотел бы выяснить на этой теме.

melky 16.05.2012 10:52

Цитата:

Сообщение от bes (Сообщение 174722)
Так или не так это я и хотел бы выяснить на этой теме.

я все равно не понял, что ты пытаешься обьяснить :) разжуй.

оно?
do {

  var i;

  if(i){
    i += 1;
  } else {
    i = 0;
  }

} while(1);

bes 16.05.2012 11:22

Цитата:

Сообщение от melky
я все равно не понял, что ты пытаешься обьяснить разжуй.

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

Раед 16.05.2012 11:26

У меня тоже возникал такой вопрос. Что лучше?
Это
a = a||7

или это
a||(a=7)


Часовой пояс GMT +3, время: 02:16.