Anonymous
Почти всё можно написать красиво. Без копипасты и читабельно.
Анатолий
Баланс между экономией кода и читабельностью не запишешь никакими условиями )
Anonymous
Экономия кода? Лол
Sheldhur
Зачем ++a и a++, когда есть a += 1?
ну нет, += тоже неясности вносит
Анатолий
Зачем ++a и a++, когда есть a += 1?
Исторически сложилось, экономия на спичках.
Sheldhur
придет ньюфаг и не поймет, чё там у тебя написано
Sheldhur
поэтому надо писать a = a + 1
Sheldhur
чтобы наверняка каждый понял
Анатолий
придет ньюфаг и не поймет, чё там у тебя написано
и уйдёт на стройку работать. PROFIT!
Анатолий
А зачем вообще преобразовывать через !!, разве if сам этого не делает?
Речь идёт о преобразовании сравниваемых сущностей, насколько я понял
Анатолий
А сравнение работает совершенно не так, как в других языках
Анатолий
ща, найду копипасту
Ruslan
Anonymous
придет ньюфаг и не поймет, чё там у тебя написано
Ньюфаг тебя отпиздит за мутабельность просто. =)
Анатолий
Anonymous
Ща накинутся.
Анатолий
— null == null, undefined == undefined, null == undefined — при сравнении строки с числом, строка приводится к числу — при сравнении чего угодно с булевым значением, булево значение приводится к числу
Anonymous
Я забыл, когда мне вообще требовался инкремент.
Анатолий
Нельзя ожидать от джаваскрипта приведения сравниваемых сущностей к булеву типу, поэтому предлагается приводить их к самому
Анатолий
При чём тут сравнение? Скажи нахрена !! в if (!!string) { ... }
Потому что это приведение к булеву типу
Анатолий
А иф, если я не ошибаюсь, сравнивает условие с true
Anonymous
Лол.
Anonymous
Сравнение с булем — это не приведение к нему. Сам же написал.
Anonymous
Чччёрт. =))))
Ruslan
А иф, если я не ошибаюсь, сравнивает условие с true
Ну, получается сам иф тоже приводет к булевому значению. WTF? это троллинг что ли?
Анатолий
Anonymous
Здесь рекурсия непонимания.
mr. Klaes
if !1 0
Анатолий
Если нет - то пусть автор опроса напишет, что он имел в виду :)
Anonymous
Да, поэтому предлагается приводить явно
Сравнение с булем — приведение буля к числу. Приведение значение к булю — это не сравнение с булем.
Анатолий
Там у него ещё && стоит, особенности которого тоже нужно учитывать
Anonymous
Просто пиздец.
Ruslan
Сравнение с булем - это приведение к булю а потом сравнение
Анатолий
При сравнении чего угодно с булевым значением, булево значение приводится к числу
Anonymous
Приведение к булеву — это не сравнение с булевым.
Анатолий
И что? =)
Это ответ Руслану, ничего )
Anonymous
При сравнении чего угодно с булевым значением, булево значение приводится к числу
Это не значит, что приведение к булеву — это сравнение с булевым.
CherryTea
Здесь рекурсия непонимания.
Ruslan
Приведение к булеву — это не сравнение с булевым.
Сначала приведение, потом сравнение
Anonymous
Сначала приведение, потом сравнение
Приведение — это просто приведение. =))
Анатолий
Здесь рекурсия непонимания.
И вообще вопрос поставлен расплывчато. Единственное что можно на него ответить - по ситуации, да :) Я смотрю, этот вариант и ведёт
Анатолий
Если учитывать вообще всё, то тогда нужно вспомнить, что ! приводит операнд к bool прежде чем вычислить выражение, а == сначала сравнивает, а затем приводит к bool результат
Анатолий
А ещё у него &&
Anonymous
И if (myVar) делает то же самое, что if(!!myVar === true)?
Anonymous
Первое — неявно, второе — явно.
Anonymous
Абсолютно безопасно.
Anonymous
if (var1 && var2) ... if ((!!var1 === true) && (!!var2 === true)) ...
Anonymous
Тоже идентично.
Анатолий
Анатолий
Предлагалось просто двойным отрицанием к булю приводить
Elena
Жесточина ))
Anonymous
А зачем с тру сравнивать?
Чтобы всем понятно было.
Ruslan
Абсолютно безопасно.
Хрень какая-то, достаточно if(myVar)
Анатолий
Чтобы всем понятно было.
Ну можно на всякий случай ещё пару раз то, что получилось с тру сравнить. Каскадом ))
Дима
Хрень какая-то, достаточно if(myVar)
Это не проверка на false
Anonymous
А то вдруг двойное отрицание не так к булеву приведёт.
Ruslan
Это не проверка на false
Ну тогда if (!myVar)
Дима
Ну тогда if (!myVar)
Аналогично
Anonymous
Я предлагаю привести код, где if (myVar) небезопасно.
Анатолий
Мина зарыта не там, где вы её ищете :)
Ruslan
Аналогично
Ну а разница в чём? код отработает также
Ruslan
Нет конечно же
Пример можешь привести?
Дима
Твой вариант так же аффектит 0, null и прочие falsy
Anonymous
if (myVar == true)
Это другой кейс.