Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.10.2011, 22:58
Новичок на форуме
Отправить личное сообщение для ritium Посмотреть профиль Найти все сообщения от ritium
 
Регистрация: 21.10.2011
Сообщений: 1

Насколько верно использовать присваивание как логическую операцию?
собственно вот

if(a=1)console.log('dd')
срабатывает

if(a=0)console.log('dd')
не срабатывает

насколько правильно использовать такую конструкцию?
Ответить с цитированием
  #2 (permalink)  
Старый 22.10.2011, 03:27
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Это не есть best practice
Такой код приемлим ровно до тех пор пока его пишите Вы в одиночку.
Потому что стороннему программисту может показатся, что здесь сравнение, либо вы опечатались.
Чрез год, когда вы снова взгляните на свой код, вы будете в роли стороннего программиста, и такой код потребует дополинительного вашего времени. и эту потерю можно избежать.



Хорошей практикой является такой стиль:
a=0;
if(a) {
    console.log('dd')
}

в таком случае всем становится ясно что тут происходит (с поправкой на отсутсвие строгой типизации).
Ответить с цитированием
  #3 (permalink)  
Старый 22.10.2011, 11:47
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

while( node= node.parentNode ) ancestors.push( node )

вполне нормальная практика
__________________
.ня
Ответить с цитированием
  #4 (permalink)  
Старый 22.10.2011, 14:02
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

для циклов такая практика нормальна ИМХО
не для if-ов
Ответить с цитированием
  #5 (permalink)  
Старый 22.10.2011, 14:07
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от Gvozd
не для if-ов
только вчера писал:
if (!partsCount || !(interval -= intervals[i] * num)) {
	break;
}

если interval вне if вычислять, то иногда он впустую вычисляться будет.
Ответить с цитированием
  #6 (permalink)  
Старый 22.10.2011, 18:19
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Riim
если interval вне if вычислять, то иногда он впустую вычисляться будет.
А не надо вне if, надо внутри, а потом ещё один.
Ответить с цитированием
  #7 (permalink)  
Старый 22.10.2011, 19:32
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от Kolyaj
А не надо вне if, надо внутри, а потом ещё один.
так:
if (!partsCount) {
    break;
}
interval -= intervals[i] * num;
if (!interval) {
    break;
}

?

А если вместо break много кода? Что-то башка под ночь не варит.
Ответить с цитированием
  #8 (permalink)  
Старый 23.10.2011, 10:34
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

вынести этот код в функцию х)

либо извращаться:

breaking: {
    checks: {
        if( !partsCount ) break checks
        interval-= intervals[ i ] * num
        if( !interval ) break checks
        break breaking
    }
    // тут много кода
    // break loop
}
__________________
.ня
Ответить с цитированием
  #9 (permalink)  
Старый 23.10.2011, 13:00
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от tenshi
вынести этот код в функцию х)
если это не универсальный код, читабельней вряд ли станет.
Ответить с цитированием
  #10 (permalink)  
Старый 24.10.2011, 04:57
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

он вызывается в 2 местах. этого достаточно
__________________
.ня
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как использовать спрайты для Inline-блоков в качестве фона в IE6? Nominus umbra (X)HTML/CSS 2 11.06.2010 21:58
.load() - как в загруженном содержимом использовать jquery? rbooz jQuery 14 25.05.2010 12:03
isDefaultSelected - как ее использовать для...? Semen Events/DOM/Window 2 25.08.2009 20:13
Как заставить браузер использовать закэшированное изображение? fog Общие вопросы Javascript 5 13.08.2009 15:40
Как изменить скрипт, что бы им его можно было использовать для нужной страницы Nick50_70 Общие вопросы Javascript 0 28.04.2009 23:30