Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.05.2012, 09:35
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

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

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

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

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

Хотелось бы узнать, что это: просто стиль программирования или за этим стоят какие-нибудь другие объективные причины??
Ответить с цитированием
  #2 (permalink)  
Старый 16.05.2012, 09:41
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

пример кода. На мой взгляд javascript в этом отношении вообще супер, в нем можно использовать логические операторы для присваивания значений.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 16.05.2012, 09:59
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

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

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

Сообщение от nerv_ Посмотреть сообщение
пример кода. На мой взгляд javascript в этом отношении вообще супер, в нем можно использовать логические операторы для присваивания значений.
ты хотел сказать, в выражение засунуть присваивание)
Ответить с цитированием
  #4 (permalink)  
Старый 16.05.2012, 10:24
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

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

    return options.test;
}
Ответить с цитированием
  #5 (permalink)  
Старый 16.05.2012, 10:27
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от DreamTheater Посмотреть сообщение
options = options || {};
я неправильно понял что плохого в "значениях по умолчанию" ?
Ответить с цитированием
  #6 (permalink)  
Старый 16.05.2012, 10:45
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от 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>
Ответить с цитированием
  #7 (permalink)  
Старый 16.05.2012, 10:49
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от melky
если я тебя правильно понял, то этот приём - полная дурость.(IMHO)
Так или не так это я и хотел бы выяснить на этой теме.
Ответить с цитированием
  #8 (permalink)  
Старый 16.05.2012, 10:52
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от bes Посмотреть сообщение
Так или не так это я и хотел бы выяснить на этой теме.
я все равно не понял, что ты пытаешься обьяснить разжуй.

оно?
do {

  var i;

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

} while(1);
Ответить с цитированием
  #9 (permalink)  
Старый 16.05.2012, 11:22
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от melky
я все равно не понял, что ты пытаешься обьяснить разжуй.
Я привёл пример выше.
Я хочу делать так как в этом примере, то есть переприсваивать значения переменным без проверки существуют они там уже или нет, и не ловить по этому поводу себя на мысли "а не пишу ли я говнокод", вот я и выясняю, говнокод это или нет.
Ответить с цитированием
  #10 (permalink)  
Старый 16.05.2012, 11:26
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

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

или это
a||(a=7)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подгрузка скрипта перед редиректом ссылки Cepin Javascript под браузер 4 10.12.2010 21:06
Функция проверки onDomReady. Не могу разобраться с кодом vandy3 Общие вопросы Javascript 6 08.11.2010 09:47
Ротатор ,как сделать проверку перед показом? tom Общие вопросы Javascript 6 09.03.2010 15:20
Результаты проверки сервером формы ekkl jQuery 3 30.01.2010 14:29
Удалить ряд символов перед или после курсора до определенного сивола brd Javascript под браузер 3 30.10.2009 08:20