Логично

Логично Javascript, Null, Логика

IT-юмор

5.7K пост52.5K подписчиков

Добавить пост

Правила сообщества

Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору

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

у JS вполне оправданное мнение что автор сравнивает жопу с пальцем. Но JS никто не спросил.

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

Проблема и js других слаботипизированных языков в том, что относительно простая операция обрастает десятками оговорок.

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

да здесь даже слабая типизация не при делах. NULL понятие прежде всего из СУБД, где первым делом объясняют что NULL IS NOT NULL и проблема не в типизации, а в понятии.

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

Эм. null или как аналог none это ничего. Особое значение обозначающее пустоту. То что в СУБД так же используют NULL для обозначения пустоты доказывает только то, что там есть пустые места. Никакого отношения к наследственности это не имеет.

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

А в остальных языках null == null,  None == None и т.д.

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

Потому что остальные языки по умолчанию используют то, что в JS ===

раскрыть ветку (1)
45
DELETED
Автор поста оценил этот комментарий
Да ну нахуй, буду проституткой
3
Автор поста оценил этот комментарий

потому что с точки зрения языка null ничем не отличим от none и в целом не редко реализуется по принципу define NULL 0

Хотя все же понятие NULL ближе по смысле к нулю, а к делению на ноль.

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

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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Для этого нужно сравнивать с разными типами. Вы можете писать на тайпскрипте, если хотите) проверка на пустую строку, словарь, ноль или андефайнд в одну строку тоже имеет ряд преимуществ
Автор поста оценил этот комментарий

Д - деликатность.

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

Та все же очень просто *SARCASM*. null <= 0. Тут применяется 2 операции: сравнение и проверка на больше/меньше. Со сравнением все понятно, а вот у "<" и ">" под капотом есть "я художник, я так вижу". Когда проверяем на больше/меньше - интерпритатор все не текстовые значения приводит к числу. Внутренний toNumber(null) возвращает ноль и на деле сравнение выглядит как 0 <= 0

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

@ nerd_mode = 1

На самом деле суть вышеописанной ситуации в простом, хотя и не очень продуманном алгоритме работы JS. Если мы обратимся к спецификации, что лежит по адресу https://www.ecma-international.org/ecma-262/5.1/#sec-11.8.3 то увидим:

11.8.3 The Less-than-or-equal Operator ( <= )

The production RelationalExpression : RelationalExpression <= ShiftExpression is evaluated as follows:


Let lref be the result of evaluating RelationalExpression.

Let lval be GetValue(lref).

Let rref be the result of evaluating ShiftExpression.

Let rval be GetValue(rref).

Let r be the result of performing abstract relational comparison rval < lval with LeftFirst equal to false. (see 11.8.5).

If r is true or undefined, return false. Otherwise, return true.

Корень зла спрятался в r, коей принят результат от "<", который как мы знаем по логике JS'а, описанной в https://www.ecma-international.org/ecma-262/5.1/#sec-11.8.1 будет false. Т.е. если Null < 0 false, то Null <= 0 полюбас true. Ведь так?


@ nerd_mode = 0


Сам факт того, что JS умеет сравнивать даже жопу с пальцем уже достоин уважения :peka: Просто логика сравнения жопы и пальца не укладывается в нашу с вами логику обывателя. У нас просто нет открытого третьего глаза и связи с подпространственными ктулху-наноботами, вращаюшими поршни мифического движка JS'а.


ЗЫ: могу ошибаться, но версия с неявным приведением мне все равно не нравится.

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

Да он особо-то не возмущается

ещё комментарии
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку