It-юмор

It-юмор
Вы смотрите срез комментариев. Показать все
19
Автор поста оценил этот комментарий

поясните шутку, а то я не в IT, но хочу другу скинуть повыебываться

раскрыть ветку (73)
114
Автор поста оценил этот комментарий

Это новый (и чуть более тупой) вариант старой шутки

Иллюстрация к комментарию
раскрыть ветку (28)
47
DELETED
Автор поста оценил этот комментарий

Все равно нихуя не понял.  Я проститутка кажется...

раскрыть ветку (27)
88
Автор поста оценил этот комментарий

Это называется неявное приведение типов. В первом случае программа видит цифру 5 в кавычках, что означает, что это не число, а просто символ строки, как буква к примеру. Но потом идет минус, чисто арифметический оператор. Как из буквы можно вычесть число? JS пытается привести строку '5' в число, и у него это получается, потому что в строке действительно было число. И на выходе получается 2. В следующем же случае, вместо попытки отнять тройку, ее прибавляют. А во многих языках программирования прибавлять можно и строки тоже, это называется конкатенация, или просто объединение. Так что JS тут просто видит, мол, к строке пытаются прибавить число. Раз первой была строка, то и вторую переменную он преобразует в строку, и получится строка '53', потому что было бы нелогично, если бы он решил преобразовать первую переменную в цифру. В третьем же примере уже просто доведение ситуации до абсурда, сначала идет строка, потом плюс который в случае со строками означает конкатенацию, а следом, внезапно, минус. Ну ок, теперь у нас минус это тоже строка, а значит объединяем ее с предыдущей строкой, и третью туда же засунем.

раскрыть ветку (24)
28
Автор поста оценил этот комментарий
После прочтения и усвоения я уже программист js?
раскрыть ветку (3)
30
Автор поста оценил этот комментарий

Нет, ты по прежнему проститутка, но теперь  насилуют твой мозг...

раскрыть ветку (1)
4
Автор поста оценил этот комментарий

Почему этого комментария еще нет отдельным постом?

7
Автор поста оценил этот комментарий
Senior panel js developer
18
Автор поста оценил этот комментарий
Сложно, но понятно
9
Автор поста оценил этот комментарий

'5'+-'2'. Возможно минус воспринимается как унарный к '2'. Т.е. 2 становится числом. А дальше имеем аналог 2го случая '5' + (-2).

раскрыть ветку (5)
7
Автор поста оценил этот комментарий

Хмм, вообще да, наверное ты прав. А то эта загадка и мне покоя не давала

4
Автор поста оценил этот комментарий

Так вероятнее. Приоритет операций: сначала унарные, потом уже все остальное.

1
Автор поста оценил этот комментарий

Проверяется ж элементарно в консоли почти любого браузера:

'5' + - '2'

"5-2"
Неа. Начали со строки, значит, и минус - тоже строка.

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Неа. Начали со строки, значит, и минус - тоже строка.
ок.

(-2)+ '5' = -25; 

-'2' + '5' = -25;

НО!

- '2' - '5' = 7; - первый унарный минус преобразует строку '2' в число, потом, т.к. от числа отнимается строка(а не прибавляется), пытается преобразовать строку в число. получается. выполняет вычитание.


раскрыть ветку (1)
Автор поста оценил этот комментарий
Действительно. Ладно, придется тоже идти в проститутки (
2
Автор поста оценил этот комментарий

Я прочитал, мне больно, это нормально?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Просто смирись.

4
Автор поста оценил этот комментарий
Собственно потому динамические типизированные ЯП зло
раскрыть ветку (3)
2
Автор поста оценил этот комментарий

Я бы так не сказал. Я уверен, что можно написать полное говно на языке со строгим синтаксисом, вроде Java, а можно написать шедевр на каком-нибудь PHP. Обычно я вообще не привык обвинять в чем-то языки программирования, и часто их плюсы и минусы слишком уж субъективны. Это просто особенности, которые служат конкретной цели. Ну есть там динамическая типизация и прекрасно. Но вот кое-каких программистов, которые всем этим злоупотребляют и пишут непотребщину, пользуясь лояльностью языка, можно было бы тапком по голове и настучать. Нормальный человек всю эту херню '5' + 3 будет писать только в мемасах, чтобы высмеять. Вот потом и идет ненависть к языку программирования, просто из-за того, что какому-то одному прогеру пришлось разбираться в адском коде другого, всеми возможными словами поминая его мать и вспоминая старые добрые деньки на своем C++

раскрыть ветку (1)
Автор поста оценил этот комментарий
Никто не будет писать '5' + 3, вы правы. Но вы не учитываете, что это могут быть переменные, которые могут прилететь хрен пойми откуда и иметь любой тип, который из контекста далеко не всегда понятен. Так что '5' + 3 вполне себе встречающаяся ситуация, которая приводит к ошибкам
Автор поста оценил этот комментарий

А при чем тут динамическая типизация, если обсуждаемое явление является проявлением нестрогой типизации + уебанского выбора операторов? Во многих языках с динамической типизацией такой проблемы не существует.

1
Автор поста оценил этот комментарий
Иллюстрация к комментарию
Автор поста оценил этот комментарий

Понятно. Буду проституткой

Автор поста оценил этот комментарий

Это пиздец. Надеюсь никогда не придется работать с js

раскрыть ветку (1)
Автор поста оценил этот комментарий
Это еще не самое хуевое)
Автор поста оценил этот комментарий
компилятор не дурак!
раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Тут интерпретатор

DELETED
Автор поста оценил этот комментарий

Это пиздец, товарищи.

4
Автор поста оценил этот комментарий

Все указанные операции в JavaScript именно так и работают. То есть, '5'-3 действительно там равно 2 и тд. Собственно, нелогичность этих операций на первый взгляд и является солью шутки

1
Автор поста оценил этот комментарий
В Языках программирования есть типы данных.
целочисленые, строки и тп.
тоесть 5 не равно "5"
5+5=10
"5"+"5"="55"
как то так.
13
DELETED
Автор поста оценил этот комментарий
Сложили две переменные 9 и 9. Но так как javascript тупенький, он посчитал, что это не цифры, а строчные элементы. Получилось "99"
раскрыть ветку (40)
24
DELETED
Автор поста оценил этот комментарий
9 и 9 это значения переменных. Если они оба number то все будет норм. Если один из них строка, то сложит строки. Поэтому умненькие делают + перед переменной, дабы сменить ее формат. Тупенькие тут разрабы, которые не используют принудительную смену типа переменной
раскрыть ветку (27)
9
DELETED
Автор поста оценил этот комментарий

не нужно использовать принудительную смену типа, нужно просто не записывать строки туда где должды быть числа

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Объясните это дата атрибутам)

DELETED
Автор поста оценил этот комментарий

Согласен преполностью)

2
DELETED
Автор поста оценил этот комментарий
Строгой типизации js не хватает как по мне
раскрыть ветку (2)
5
Автор поста оценил этот комментарий

Есть typescript для этого. Есть flow.

DELETED
Автор поста оценил этот комментарий

Ну такое. Я привык быстро.

1
Автор поста оценил этот комментарий
Я так понимаю что переменные неопределенного типа изначально? А если принудительно указывать числовой? Поправьте меня, если я ошибаюсь, но частое использование типа надо и не надо var путает. Смотришь в код, а там как будто варвары. Var var var var var.
раскрыть ветку (13)
3
Автор поста оценил этот комментарий

Ну var уже почти атавизм, сейчас используется let. Не пойму где тут путаться:

let var1 = 42;

let var2 = ‘pikabu’;

let var3 = [1, 2, 3];


Неужели код неочевидный?

раскрыть ветку (5)
2
Автор поста оценил этот комментарий

Я скорее про то, когда это используется рядом с функцией


let var4 = blabla();

let var5 = bloblo();

let var6 = var4 + var5;


Сможете сказать какого типа var6?

раскрыть ветку (3)
2
Автор поста оценил этот комментарий

А не надо давать такие названия переменным. К примеру, если функция возвращает `True` или `False`, то и называться она должна что-то типа `isBlabla()`. Так же названия переменных и функций типа `let Name` или `getTitle()` вряд ли будут типа отличного от строчного, а `let Left` и `Sum(a,b)` наверняка будут числовыми. Ну и не должна функция выполнять больше, чем говорит её имя. Если называется допустим `closeForm()`, то она должна только закрыть форму и не должна при этом проверять введённые данные, сохранять их и рисовать 7 перпендикулярных красных линий.

раскрыть ветку (2)
2
Автор поста оценил этот комментарий

В любом случае, при любой возможности лучше пользоваться TypeScript, крупные проекты на JavaScript - это просто ад.

раскрыть ветку (1)
Автор поста оценил этот комментарий
Автор поста оценил этот комментарий
Зато вар даёт хойстинг) не могу правда примера использования придумать))
2
Автор поста оценил этот комментарий

если вам нужен js с типизацией, то надо использовать typescript

раскрыть ветку (5)
Автор поста оценил этот комментарий

Спасибо. Теперь я больше знаю про js, хоть никогда не был с ним знаком. Наверное в нем это благополучно вписывается.

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Попытка сделать из JS C#. Слегка.

Автор поста оценил этот комментарий

Как по мне, так абсолютно бесполезная штука, за тем исключением, если не пишешь на нём весь проект с ноля, который при этом является замкнутым и никак не может расширяться сторонними скриптами.

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

вы про транспайлеры видимо не слышали)

раскрыть ветку (1)
Автор поста оценил этот комментарий

Если покажите мне, как транспайлировать классы из TypeScript в JS с сохранением приватности полей и методов, я во первых буду крайне признателен, а во вторых соглашусь, что от TS может быть реальная польза. К сожалению на сегодняшний день, TS не умеет превращать свои классы в фабричные функции, а JS ещё сам не имеет окончательно реализованной работы с классами.

DELETED
Автор поста оценил этот комментарий

Ну ты можешь указать число записав var test = 12, а не "12".

1
Автор поста оценил этот комментарий

Там еще разные результаты смотря какой тип первый

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Не. Пофигу какой первый. Если хоть один.

ещё комментарии
7
Автор поста оценил этот комментарий

JavaScript как раз не тупенький, а вот разработчики которые не проверяют типы переменных не очень умные.

раскрыть ветку (5)
4
Автор поста оценил этот комментарий
Плохой дизайн языка
раскрыть ветку (2)
3
Автор поста оценил этот комментарий

Так исторически сложилось, а так как он встроен в большинство браузеров и есть тысячи сайтов с кодом разной степени окаменелости они стараются не ломать обратную совместимость. Для исправления дизайна и придумали CoffeScript, TypeScript и т.д.

1
Автор поста оценил этот комментарий

Дизайн отличный, просто когда используют малолитражку вместо трактора получаются такие вот недоразумения.

2
Автор поста оценил этот комментарий

Как раз потому, чтр в js надо приводить типы переменных, он тупенький

ещё комментарий
1
Автор поста оценил этот комментарий
Нет тупых ЯП. Есть языки, которые позволяют программистам быть тупыми. А те и орут потом, что язык тупой.
раскрыть ветку (5)
Автор поста оценил этот комментарий

Он послал тебя на хуй? Вот что за люди вообще :(

раскрыть ветку (1)
Автор поста оценил этот комментарий

Увы, таких тут немало

Автор поста оценил этот комментарий

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

DELETED
Автор поста оценил этот комментарий
Комментарий удален. Причина: оскорбления, грубое общение и провокации
раскрыть ветку (1)
Автор поста оценил этот комментарий
Автор поста оценил этот комментарий

'9'+'9' получится 99. потому что плюсом складываются строчки в JS, если их вот так написать 'что-то'.

раскрыть ветку (2)
4
Автор поста оценил этот комментарий

что-то=ч?

Автор поста оценил этот комментарий
Эмм, а в других языках '9'+'9' как отработает?
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку