Мохнатые уроды и моральные пёзды. Войти !bnw Сегодня Клубы

А вообще -- у меня на работе случился пиздец, после которого прочая ебля с JS -- просто сказка. После очередного большого рефакторинга нашего JS-кода перестала работать одна херня. Долго копался в лапше (кстати, риспект файрфоксовым ЖС-утилитам, очень хороши уже стали) этого кода, оказалось -- есть функция

function calculate_threshold(config, playtime, contentLength) {
    return config.playtime_threshold !== null ? (playtime / 1000 >= config.playtime_threshold) : true;
}

И есть вызывающий её код:

threshold = calculate_threshold(playtime, contentLength);

Казалось бы -- ну обычное дело для скриптовых языков такой хуйнёй страдать. Но! Какой-нибудь питон сразу же взвыл бы, кинул Exception и так далее, и ошибка бы моментально была исправлена. Здесь же вот что происходит: код работает тихонько дальше (вызывать с недостаточным кол-вом аргументов -- нормально). Внутри вот этого calculate_threshold в config поступает число (playtime вместо config получается), и наш любимый джаваскрипт от "config.playtime_threshold" вместо ещё одного взрыва и эксепшна возвращяет undefined.

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

// уже точу свой WebStorm, эту почему-то он ошибку не видит, зато нашёл кучу других

Рекомендовали: @ulidtko @buckbeak
#R7AIVR / @kb / 3814 дней назад

Причина ошибки проще - JS is динамическое говнецо, такую бы хуйню сразу поймало штатической проверкой.
#R7AIVR/HL6 / @ntsm / 3814 дней назад
@ntsm Ну да. Если на меня жс свалят -- буду смотреть на typescript // хотя надеюсь не свалят
#R7AIVR/UGE / @kb --> #R7AIVR/HL6 / 3814 дней назад
В жс все переменные функции насильно умолчабельные, чтобы это всосать нужно немного почитать апи и примеры жикьюери хотя бы. Если ты не знаешь основных приколюх языка на котором пишешь ты будешь страдать.
#R7AIVR/NTN / @mugiseyebrows / 3814 дней назад
> потеряли несколько дней но как?
#R7AIVR/01D / @krkm / 3814 дней назад
@mugiseyebrows > насильно умолчабельные бля, а если мне нужна явная-обязательная-неумолчабельная? что делать?!
#R7AIVR/XNR / @ulidtko --> #R7AIVR/NTN / 3814 дней назад
@ulidtko тьюринг-полный язык, делай что хочешь
#R7AIVR/8L6 / @krkm --> #R7AIVR/XNR / 3814 дней назад
@krkm удобно
#R7AIVR/JON / @ulidtko --> #R7AIVR/8L6 / 3814 дней назад
@ulidtko если ты не можешь отстрелить себе ноги, значит ты и не сможешь застрелить матриархатичного путина, пытающегося откусить твою залупу
#R7AIVR/3DI / @krkm --> #R7AIVR/JON / 3814 дней назад
@polecat >/328
#R7AIVR/STF / @krkm --> #R7AIVR/328 / 3814 дней назад
@krkm настоящий язык для благородных донов с доблестными целями
#R7AIVR/YSS / @mugiseyebrows --> #R7AIVR/3DI / 3814 дней назад
@mugiseyebrows если тебе нельзя ебать детей, то и непидорков из них не вырастишь
#R7AIVR/YYP / @krkm --> #R7AIVR/YSS / 3814 дней назад
dae arguments.length
#R7AIVR/84J / @anonymous / 3814 дней назад
@polecat Не ловит.
#R7AIVR/SCW / @kb --> #R7AIVR/328 / 3814 дней назад
@anonymous Тут даже больше проблема в том, что `интчисло.хуйочко` вернёт undefined и ещё и зарезолвится как `false` в условии
#R7AIVR/81O / @kb --> #R7AIVR/84J / 3814 дней назад
@krkm Ну, ясен хер тут всё зависит от конкретных координаций между всеми учавствующими, самое главное здесь -- то, что никаких ошибок от жс не пишется и не логируется, всё просто тихо работает вообще не так как хотелось. В нашем случае пока кто-то что-то заметил, пока я понял что именно там ошибка и пока делал всякий дебаг жс -- прошло где-то столько (на самом деле до сих пор фикшу, т.к. другие проблемы при деплое со всякими gulp'ами хуялпами вылезли).
#R7AIVR/Y8Y / @kb --> #R7AIVR/01D / 3814 дней назад
@polecat не будет ловить, для жс абсолютно нормальная ситуация с переменным числом аргументов
#R7AIVR/ENX / @krkm --> #R7AIVR/328 / 3814 дней назад
@kb не хуй знает
#R7AIVR/SA3 / @krkm --> #R7AIVR/Y8Y / 3814 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.