» 4 in l / javascript :: javascript :: programming languages :: языки программирования :: программирование :: programming :: geek :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

javascript языки программирования программирование geek 
» 4 in l <- false
Programmer Memes
@iammemeloper
Without a doubt, the best programming language
11:09 PM -Sep28, 2023 121.6K ¡ews
» let l = [1,2,3,4]
<- undefined
» 0 in l <- true
» "0" in l <- true,javascript,языки программирования,программирование,geek,Прикольные гаджеты. Научный,
Подробнее
» 4 in l <- false Programmer Memes @iammemeloper Without a doubt, the best programming language 11:09 PM -Sep28, 2023 121.6K ¡ews » let l = [1,2,3,4] <- undefined » 0 in l <- true » "0" in l <- true
javascript,языки программирования,программирование,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,javascript,programming languages,programming,geek
Еще на тему
Развернуть
Ахаха мемы по жаваскрипту наканецта!!!!!
ktulhu74 ktulhu74 29.09.202309:44 ответить ссылка 6.3
Надо читать документацию, и что именно проверяет in. JS есть, за что ругать, но не тогда, когда мемодел ленится читать документацию, и гадает исходя лишь из названия метода.
Точнее даже не так. Человек явно знает, что делает in, ведь он выбрал именно цифру 4 для проверки, а не 1, 2 или 3. Так что ещё и вводит в заблуждение людей, которые не знают, что делает in, вызывая у них убеждение, что язык работает неправильно.
in может делать что угодно по документации.
интуитивно начинающий дев очевидно подумает одно, создаст баг, проебется над ним сутки, а потом загуглив будет изливать эмоции.

как бы шутка не на ровном месте появилась. я прогер (не JS) со стажем и то прихуел и полез проверять в консоль
imhosep imhosep 29.09.202310:39 ответить ссылка -1.4
У интуитивно начинающего дэва, в таком случае, будет ещё множество тупняков, которые можно было бы предотвратить, изучив документацию. Причём, в любом языке.
Я тоже не на JS программирую, но прихуеть не прихуел, а сразу предположил, что дело, скорее всего, в ключах, раз такой результат. И полез не проверять в консоль, а гуглить метод in в JS.
ну в этом случае мне достаточно было консоли чтобы понять в чем дело.

красивые конечно слова, но всех джунов ты не проконтролишь. я больше чем убежден что даже читая документацию легко упустить или забыть подобное если до этого не пользовался часто функцией.

когда джун что-то такое накодит, разбираться с проблемой приходится сеньорам и лидам.
подобный баг может легко пройти тесты и появиться только на проде.
а ты потом сиди и гадай где проблема, если локально не воспроизводится.
тут при определенных данных 1 случая из n будет ошибка и в n-1 случаях будет неверное поведение.
локализовать такое сложно

а все потому, что некоторые мега умники считают, что лучше документация это священный грааль. документация без нормального опыта использования это примерно ничего.

я бы на подобную функцию как минимум поставил бы ворнинг на стат анилизе кода.
Намешал ты всего в кучу что-то. И джуны, и тесты, и проды, и проблемы, и ворнинги. Не уверен, что всё это тут относится к делу, мы же просто *личные* подходы обсуждаем, использовать ли документацию (или в целом гугл) или кодить интуитивно.

>а все потому, что некоторые мега умники считают, что лучше документация
Как-то логика покинула чат. То есть, джуны криво кодят, потому что некоторые умники считают, что документацию надо читать? Шо?
Конечно, опыт очень важен, но документашка в большинстве случаев отсекает лишние тупняки и вопросы Не всегда, конечно, но всё же. Не просто же так её пишут.
не стоит вопрос использовать документацию или нет. документацию так или иначе любой норм прогер прочтет рано или поздно.
я говорю о том, что документация не помогает избежать подобного рода багов (даже сеньорам).
и тут на лицо ошибка дизайна языка программирования, которая сильно важнее ошибки условного джуна.

ЗЫ
> интуитивно начинающий дев очевидно подумает ...
прошу прощения, эту фразу можно прочесть двояко
тут подразумелось следущее: начинающий дев интуитивно подумает ...
Ну про ошибку проектирования языка я соглашусь. Это как комменты в коде вместо нормального понятного кода, который и без комментов ясен.

А в остальном - я привык проверять и перепроверять всё, что делаю. В том числе и те функции, что использую, я обычно либо смотрю хотя бы быструю справку в IDE, либо иду в гугл и ищу документацию. Мне нужно быть уверенным, что то, что я написал, будет работать так, как я задумал. Все методы будут принимать и возвращать то, что задумано, и результат будет очевиден, и так далее.
Потому джун один на сеньора. И потому юзают тайпскрипт. И потому есть код ревью. А эта ситуация возникает, когда люди работают на похуе
Mars53 Mars53 29.09.202313:57 ответить ссылка 0.5
>даже читая документацию легко упустить или забыть подобное
Как это можно пропустить или забыть?
1. Оператор in проверяет существование ключа. Тут нечего пропускать, некуда ставить ворнингов, негде путаться. Можно, конечно, забыть про существование такого оператора (наверное) - но ты в любом случае, когда забываешь что делает оператор, не выдумываешь его поведение из головы, считая что чем ты сильнее будешь верить - тем лучше оно будет работать. Не выдумываешь ведь?
2. Ключи объектов - это либо строки, либо симболы. Это вообще база, данный факт - он буквально войдет в любой ответ на вопрос "Что такое джава-скрипт?" длиннее 10 минут. Так что с этой стороны тоже никаких вопросов и недопониманий ни у кого возникнуть не должно.
ты наверное когда был джуном, прочитав кучу документации помнил все все. а что не помнил то на каждый пук лез в документацию. еще и комменты к каждому методу наверное читаешь. а то хрен знает, вдруг там неожиданная логика, не смотря на то, что название метода говорит совершенно другое.

я хз откуда такая наивность. видимо ты программист-гигачад. никогда не расчитываешь на то что код делает то что в нем написано. всегда проверяешь документацию.

когда подрастешь и начнешь писать на разных языках - поймешь о чем я говорю.
imhosep imhosep 30.09.202300:39 ответить ссылка -1.5
А я думал, что то, что ты описал, и есть нормальный программист, а это гигачад, оказывается. Ну тогда я гигачад.
Все нормальные люди так и делают. Встречал таких как ты, фантазий и претензий полная ставка, все «решения» друг с другом несовместны, потому что опыта проектирования языка естественно нет. Делать тоже нихрена не могут, пишут код, потом репу чешут «ой, а что не так». Логов никаких нет само собой, и начинается два часа отладки трех страниц детских фантазий.
Мимоподросший 25 лет опыта в 7 рабочих языках.
e38m4 e38m4 30.09.202310:45 ответить ссылка 1.5
25 лет и все еще программист? сочувствую
ты команды лидил когда нибудь? у тебя походу все прогеры все перепроверяют и не делают ошибки. а если делают то посылаешь читать документацию вместо того чтобы исключить ошибку на корню на уровне процессов...
хотя по факту. если ты пишешь на 7 языках и за 25 лет опыта помнишь каждую функцию и/или перепроверяешь каждый раз когда не уверен. то респект конечно.
я когда приходится переключаться на JS например, раз в пол года, не лезу и не хочу лезть перечитывать каждый раз документацию.

но как я писал выше, речь не обо мне или тебе, а о команде, в которой разные люди бывают. документацию ты читать любишь а посты как мсегда только то что тебе удобно
imhosep imhosep 30.09.202311:07 ответить ссылка -1.5
Да, и сам себе собирал команду. И всяким гуманитариям, которые надеются, что авось как-нибудь срастется, в ней было не место. Работать с дворниками это личный выбор, а не какой-то стандарт.

>все прогеры все перепроверяют и не делают ошибки
Убедиться, что функция/метод/конфиг делает то, что ты ожидаешь - это не что-то сверхестественное, это база, а не респект. И инструментарий к этому есть. У меня были и те, кто передавали что-то на авось и не проверяли возвращаемые статусы. Я сначала учил, потом увольнял. Ну, некоторые просто не рождены для программирования, ничего страшного.

>25 лет и все еще программист? сочувствую
А чему сочувствовать, мне это нравится, доход примерно х3-4 от того, что локально считается приличным. Вообще эта идея, что вот к N лет надо стать маняменеджером, она родилась в формате безумия, в котором вы работаете на своих галерах. В котором руководству обязательно глубоко шарить в теме, чтобы микроменеджить нанятых идиотов, иначе они вынесут все куда не надо, перепутав хуй с пальцем.

Ты вообще осознаешь, что мы говорим об <key in object>, а не о рокет сайнсе? Это как если бы плотник опасался шурупов по металлу в мастерской, потому что другой мастер может их взять и нахуярить в дерево. Шурупы по металлу консидеред хармфул, неинтуитивная эргономика, бэд плотник экспириенс, нужно срочно приделать фотолинтер к шуруповерту, чтобы присылал варнинги в чат. У нас профессия идиотов, которые не хотят читать, хотят все одной кнопкой. А то, что это их ёбаная работа - хотя бы уметь отличать in от in, не говоря о делании одной кнопки, им в голову не приходит.
e38m4 e38m4 30.09.202316:23 ответить ссылка 1.5
это походу ты говоришь об . а я говорю в общем. это только частный случай. один из многих. вместо того чтобы исправить на уровне дизайна ты допускаешь дополнительный риск поябления проблем.
ну ок. твой выбор.
imhosep imhosep 30.09.202319:46 ответить ссылка -1.5
Нельзя интуитивно начинать. Так делают только те, из кого потом вырастают ритуалодебилы вместо программистов.
e38m4 e38m4 29.09.202311:37 ответить ссылка 4.1
>интуитивно начинающий дев очевидно подумает одно, создаст баг, проебется над ним сутки, а потом загуглив будет изливать эмоции.
Я тоже прогер (не JS) со стажем (но бывает и его трогать приходится) - и не понимаю, от чего там охуевать и что там начинающему деву может быть непонятно. Что ином чекают ключи и что ключи - это строки и все кастуется в них - это буквально на второй день изучения js изучается и тут даже ничего запоминать не нужно.
давай скажи мне что любой JS дев выше мидла никогда не обосрется и не допустит эту ошибку. с удовольствие послушаю такие сказки.

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

нахуй вообще писать читаемый код. давайте обфусцированный код писать. а нему несколько томов документации.
imhosep imhosep 30.09.202300:46 ответить ссылка -1.5
>давай скажи мне что любой JS дев выше мидла никогда не обосрется и не допустит эту ошибку
ЛЮБОЙ JS дев, вне зависимости от его низости или высокости, хоть джун, хоть стажер - никогда не обосрется и не допустит эту ошибку.

>я видел когда сеньоры делали ошибки аналогичные этой
Может, они не были js сеньорами? Потому что, повторюсь, тут негде делать ошибок. Имя, конечно, не лучшее у оператора, но в посте он работает логичным образом с вещами, которые являются самыми основами языка.
Давай, скажи мне, что любой JS дев выше мидла никогда не обосрется в чем-то другом. Или что ошибок бы не было, если бы всем спустили с небес божественный яп вместо четвертого шариата. Или что твои проекты держатся на отсутствии ошибок, а не на мерах по их исправлению. У тебя не логическое мышление, и это корень проблемы. Ты апеллируешь к чему-то, даже не сравнивая, просто накидываешь несвязной тревоги в тред. С таким мышлением надо продавцом работать, ведь скидки скоро закончатся.
e38m4 e38m4 30.09.202316:32 ответить ссылка 0.0
Вау, в js массив - это объект. А из объекта значения берутся по ключу. Будут ли приколы_для_жертв_скиллбокса?
Mars53 Mars53 29.09.202309:53 ответить ссылка 3.0
вообще то in проверяет, есть ли ключ, а не значение в объекте. под капотом этот массив l является объектом
{"0": 1, "1": 2, "2": 3, "3": 4}. я с лету не помню, может ли ключ быть числом или только строкой, а при вызове по численному ключу (например l[0])срабатывает приведене типа number к string, но это особо и не важно.

так что мем не валиден, особенно когда есть куча встроенных веселостей
fokk fokk 29.09.202309:56 ответить ссылка 7.8
Сначала хотел выебнуться и сказать, что это контор интуитивное поведение оператора. Но потом понял, что если объект словарь то и питон ведёт себя точно также. Значит единственый контринтуитивный момент здесь то, что джс по тихому преврощает список в словарь, но всё равно хули (ну и то что при сравнении он не видит разницу между строкой и числом). Мем валиден.
Type help , copyright , credits or license »> 1 = [1,2,3,4]
>>> 0 in 1 False
>>> ”0” in 1 False
>>> 4 in 1 True
>>> ”4” in 1 False
>>> 1.keys
Traceback (most recent call last):
File ”<stdin>", line 1, in <module> AttributeError: ’list' object has no attribute >>> d = {"0”: 1, ”1”: 2, ”2”:
Единственный контринтуитивный момент здесь это то что надо как-то приебаться к js. А если такая же фича (или похожая) находится в другом языке - то "ну и в джи-эс значит это норм, но зато другой хуйни полно".

Друзья, есть только два типа ЯП: те, которые все ненавидят, и те, на которых никто не пишет.
Sarrees Sarrees 29.09.202321:09 ответить ссылка -0.4
хз, ни к яве, ни к шарпу, ни к бидону, ни к го нет такого вагона претензий - все они широко распространены (хотя да, они тоже не идеальны)

я даже не могу сказать, что js менее ебанутый, чем php
Под капотом там как раз нормальный массив, но интерфейс к нему выглядит как объект.
e38m4 e38m4 29.09.202311:41 ответить ссылка 1.8
Я понимаю, что RTFM, но почему документация JS напоминает правила драконьего покера, где значения карт зависят от дня недели, количества и расположения игроков, прогноза погоды за окном и т.п.?
Как бы да, но не совсем. У PHP куча всего вытянуто напрямую из С или Perl, и порядок аргументов какой попало в функциях самого ядра и т.п. (не думаю что за годы что-то поменялось). В Lua, Matlab, R - массивы начинаются с 1. И отлов неточных результатов может превратится в долгое приключение даже если ты прекрасно знаешь документацию и сама документация хороша. Wrong by Design.
blinky blinky 29.09.202312:24 ответить ссылка 1.3
И в чём проблема? В даном массиве ключ "0" это "1".
DeadTR DeadTR 29.09.202311:22 ответить ссылка 0.3
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
e* \
; -s Tomasz is building cloudash.dev 1d
^ npm install esllnt-conflg-airbnb
'••'.K r
Q 31 tn 683	5 023 ¿j ‘3’-’1’=
Traceback (most recent call last) File "<pyshell#2>"1 line 1, in <mo •3-T
TypeError: unsupported operand type(s) for 'str' and s »и	ТТгТ	lJ ■ R т-^И • ■	nTiiÏÏK'H'lilH		i I 11	тш
г		П[»]|	I Г* I ■ . V Я 1 I I в	/»Il 1	хйшТ	Щ
ж		Пш	Hií»lMhHHil!	|Д7	ijTTT	[¡iff ¡ndex.js
JavaScript Moment
1	console log(018 == '018');
2	console log(017 == ‘017');
3
■ Default: node index.js
true
false