Oleg
22.06.2018
14:56:37
типа ({}).toString() + [].toString() ?
Евгений
22.06.2018
14:56:48
Oleg
22.06.2018
14:57:11
но почему?)
Евгений
22.06.2018
14:57:16
"object Object" === 0// false.
Google
Евгений
22.06.2018
14:57:37
но почему?)
Потому что в параметрах, блока кода быть не может.
Только функция.
Oleg
22.06.2018
14:58:22
я это объяснение уже читал)
console.log({}) // {}
он же не делает тут toString
Евгений
22.06.2018
15:00:10
А когда идёт блок кода + [] происходит Number([]) и вызывается не toString а valueOf.
Вот тут я опять не понимаю.
Oleg
22.06.2018
15:02:03
Евгений
22.06.2018
15:02:19
А это мне не понятно.
Oleg
22.06.2018
15:03:28
Nikita
22.06.2018
15:03:50
лол бляавх хавххАХВХАХВХА
Евгений
22.06.2018
15:04:15
Ну первое понятно, об этом я и говорю. str !== int(0)
Google
Евгений
22.06.2018
15:04:22
Но остальное поведение.
Oleg
22.06.2018
15:04:47
не, мне все еще непонятно почему если внести внутрь то будет стринг)
Евгений
22.06.2018
15:04:53
Не, второе тоже ясно, +[]//[].valueOf(0)
Oleg
22.06.2018
15:04:57
почему === 0 это уже давно понятно
а преобразование внутри лога чет не очевидное
Евгений
22.06.2018
15:05:10
Ибо блок кода внутри не допускается.
Но почему не во всех случаях лог вызывает toString.
Dika
22.06.2018
15:06:46
Евгений
22.06.2018
15:07:20
Oleg
22.06.2018
15:07:20
Dika
22.06.2018
15:07:26
Eugene
22.06.2018
15:07:32
лог всегда превращает в тустринг
Евгений
22.06.2018
15:07:38
console.log([] + {} === 0)
Dika
22.06.2018
15:07:51
Евгений
22.06.2018
15:07:52
Потому что в итоге получается строка.
Точно.
Вот, оно, спасибо.
Доперло.
Google
Евгений
22.06.2018
15:08:25
Кхм.
Oleg
22.06.2018
15:08:49
одинаковое же приведение должно быть
Евгений
22.06.2018
15:10:19
{} + []// блок кода(отбросим) в итоге получается +[] === 0
[] + {}// в итоге строка, ибо идёт два туСтригна.
console.log({} + []) //плюс вызывает два туСтринга, получатся строка.
console.log({})// туСтринг не вызван.
Dika
22.06.2018
15:10:28
Евгений
22.06.2018
15:10:42
А в итоге, все «странное» поведение, вызывает консоль разработчика, которая воспринимает {} + [] как
[code Block] ... [].prototype.valueOf//0
Oleg
22.06.2018
15:13:37
нет
Dika
22.06.2018
15:14:00
Евгений
22.06.2018
15:14:04
Oleg
22.06.2018
15:14:31
+ [] /// 0 ?
Евгений
22.06.2018
15:14:38
Да.
Oleg
22.06.2018
15:14:47
console.log( + [] === 0 ) // true ?
Евгений
22.06.2018
15:14:49
Бинарный + вызывает valueOf.
Нет.
Vlad
22.06.2018
15:14:55
Oleg
22.06.2018
15:15:10
но console.log({} + [] === 0) // false
Google
Oleg
22.06.2018
15:15:18
значит он чет делает с этим гребаным блоком кода
Евгений
22.06.2018
15:15:19
В логе не может быть блока.
Oleg
22.06.2018
15:15:51
тьфу бля
я думал вы про другое
{} + [] /// это просто как + []
Евгений
22.06.2018
15:16:30
Консоль разраба виновата, 100%.
Oleg
22.06.2018
15:16:34
{} игнорится
Евгений
22.06.2018
15:16:35
Именно.
Oleg
22.06.2018
15:16:38
все
допер
я то думал эта хуйня внутри лога
Евгений
22.06.2018
15:16:55
Длинноватое обсуждения.
Зато интересное.
Плюс найден новый вопросы который проверяет понимания JS’а у человека.
Oleg
22.06.2018
15:17:22
теперь что тут?
Евгений
22.06.2018
15:18:00
Так, надо попробовать явные преобразования.
Google
Евгений
22.06.2018
15:18:02
Щас.
При явном преобразовании вызывается valueOf у обоих.
Oleg
22.06.2018
15:19:11
а не
он тупо пустую строку возвращает
Евгений
22.06.2018
15:19:23
Просто лог сам ничего не вызывает у данных.
Oleg
22.06.2018
15:19:33
[] + [] = ""
Евгений
22.06.2018
15:19:41
Oleg
22.06.2018
15:19:44
console.log("") -> пустая строка
Евгений
22.06.2018
15:20:37
Точно, у массива пустые.
По моему это не оч. Но траблу мы разобрали.
Oleg
22.06.2018
15:21:37
https://twitter.com/jplur_/status/891358168688754688
Alex
22.06.2018
15:21:58
Товарищи, подскажите, сделал mongodump, получил bson файл. Пытаюсь его разобрать с nodejs. Делаю bson.deserialize, но получаю только один элемент из базы (первый), хотя в bson файле их много.
Mikhail
22.06.2018
15:23:31
Евгений
22.06.2018
15:23:32
Чёткий рофель.
Gats
22.06.2018
15:37:54
подскажите почему может выдавать такую ошибку
SequelizeDatabaseError: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘foretags.invoices.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by