[{}]. А потом топите, как это можно не знать !?
Ну а это тут причём?
Давайте не путать простые примеры с хрен пойми чем
ну-ка без подсказок скажи результат или джун
Да. Сам то не знает ответ))
да упаси боже такое знать
@js_noobs_ru
Тебе это никогда не пригодится. Собственно как и знание о том, что будет если число сложить со строкой и т.д. Делаешь явные приведения типов, либо вообще используешь typescript и никогда проблем не возникнет.
зануда-моуд: тайпскрипт это одна большая проблема хотя он и полезный в ряде случаев И даже часто с ним лучше, чем без него.
просто потому что им надо уметь пользоваться? Да, есть много коряво-типизированных библиотек, но это уже проблемы не ts.
уметь пользоваться это основная проблема — то есть люди часто слишком полагаются на эти проверки, а в рантайме-то их нет и им внезапно прилетает нетипизированный жсон, а о проверке в рантайме они не подумали но он ещё и сам кривой, что тоже довольно неприятно
Отсутствие проверки в рантайме - это скорее проблема программиста, а не тайпскрипта.
а без тайпскрипта они бы о проверке жсона подумали бы?
Я наблюдал, что использование тайпскрипта часто понижает бдительность в этом отношении и даёт ложное ощущение того, что типы известны. Когда они в рантайме могут быть неизвестны. Если не налепить везде рантайм проверок.
Истина
это тебя здесь за флуд банили?
Так я же по факту ответил
это проблема тайпскрипта или же недостатки обучения?
Ну если у тебя все на ts, то эти провери действительно не нужны. Но это если мы не трогаем входящие данные из вне, там действительно надо проверять все и в хвост и в гриву. А все внутренние данные вполне можно не проверять в рантайме
> Ну если у тебя все на ts, то эти провери действительно не нужны Вооот. Это ошибка, которая часто встречается. Нужны. Потому что входные данные. А ещё не всегда всё на тс, и если у нас либа — её могут юзать из жс.
runtime? Бегущее время?
ты только половину сообщения прочитал? )
Я апдейтнул.
так он написал тоже самое. проверки нужны только для входных данных
Да, но входные данные есть всегда. В каком-то виде.
в смысле никогда не пригодится? а сейчас в чате не пригодилось бы что ли? короче, джун
а вообще на самом деле интересное поведение у штуки справа. Сначала она, по видимому, в сочетании со стрингом преобразуется в объект {}, а затем объект сам преобразуется в стринг и получается забавный результат. Надо будет покопать почему массив с объектом внутри приводится к просто объекту, в то время как пустой массив приводится к пустой строке
а зачем копать? никто такой код не пишет
чисто для спортивного интереса
даже не пытайся понять, что там происходит) Потому что есть такое https://github.com/aemkei/jsfuck И оно работает (с божьей помощью)
я писала недавно компиль брейнфака в джс. Брейнфак на самом деле логичнее большинства языков
Дело в том что {} в зависимости от положения может интерпретироваться и как объект и как пустой блок кода.
кароче я поняла, массив тупо выкидывает все что в нем есть, а затем все это добро интерпретируется как стринг. Те [{}] выдаст просто {}, ну и так далее. Веселые приключения в мире логики джс
весело)
"undefined" [ 0] // "u" [ "undefined" ][ 0][ 0] // "u" [ undefined +[] ][+[]][+[]] // "u" [ [][+[]] +[] ][+[]][+[]] // "u"
ахах оч похоже на объявление декларации смарт-контракта у меня на rust проекте)) без допинга не разобраться))
1. 0 индекс строки = u 2. 0 индекс массива = строка, 0 индекс строки = u 3. строка + [] = строка, вот это выражение '+[]' дает 0, дальше все как выше 4. '[][+[]] +[]' - а вот почему это дает "undefined" надо разобраться, спасибо)
4. тут расписаны все эти трюки, если не хочется самой ) https://github.com/aemkei/jsfuck
а, все гораздо проще, мы берем из пустого массива нулевой элемент, это нам дает андефайнд и мы тупо склеиваем андефайнд с пустой строкой, ну и получаем строку. Дальше как я уже выше писала Вполне логично)
наоборот самой интереснее
Обсуждают сегодня