РАВНО? ЧЕМУ НЕ МЕНЬШЕ ЬЧЕ рМ ЛНУ1 л У/\ * Ж мяв ЕЙ / javascript :: it-юмор :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

it-юмор geek javascript 
РАВНО?
ЧЕМУ
НЕ МЕНЬШЕ
ЬЧЕ	рМ	ЛНУ1
л		У/\ * Ж
мяв	ЕЙ,it-юмор,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,javascript
Подробнее
РАВНО? ЧЕМУ НЕ МЕНЬШЕ ЬЧЕ рМ ЛНУ1 л У/\ * Ж мяв ЕЙ
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,javascript
Еще на тему
Развернуть
какай-то сложный юмор. я пойду
Как я понял, он спросил равен ли Нулл нулю. Джава скрипт ответил что нет. Тогда он спросил меньше ли Нулл нуля. ЖС ответил что нет. И когда тот уже решил что нулл больше нуля, он спросил меньше либо равен нулл, и ЖС ответил что да, противореча себе до этого.
Kolwin Kolwin 14.12.201821:16 ответить ссылка 7.8
А потом все удивляются "С фига оно не работает, всё же верно написано".
Kreolis Kreolis 14.12.201821:28 ответить ссылка 11.4
Если ты пишешь что-то хоть сколько-нибудь серьёзное, то должен быть в курсе таких фишек языка, а лучше если ещё и понимаешь, почему они так работают. Если же ты только встаёшь на путь познания языка, то не будешь утверждать, что "все верно написано", а пойдешь курить маны.
А если ты говнокодишь за бутеры, вряд ли тебя будет волновать такая мелочь, как не всегда верно работающий код.
60mA 60mA 15.12.201800:02 ответить ссылка -1.0
К языкам и библиотекам часто нет нормальной документации, описывающие такие "фишки". Особенно если они недавно появились.
crkll crkll 15.12.201808:07 ответить ссылка 0.8
юмор простой, а интерпретатор сложный
Твою ж мать. Joy нашел у меня баг в коде.
TimWarMag TimWarMag 14.12.201821:30 ответить ссылка 23.8
а если так?
(null == О II null < О)
false
Viking77 Viking77 14.12.201822:23 ответить ссылка 23.4
false
huels
Иисyc Иисyc 15.12.201800:09 ответить ссылка -6.3
Иисус не шарит в программировании
dstwo dstwo 15.12.201802:02 ответить ссылка 1.6
ложное утверждение или ложное утверждение, интересно, что же будет (хотя, судя по примеру выше, правильный ответ - все, что угодно)
А вот если так:

null * 1 == 0

То результат true

AjiTae ниже объяснил почему так.
int16 int16 15.12.201801:28 ответить ссылка 0.6
Соответственно null + 0 == 0 дает true
А null + 0 == null дает false

Все логично
int16 int16 15.12.201801:31 ответить ссылка 0.1
Мне интересно только одно, как сильно будут бить человека, если он в рабочем проекте будет такой писать код.
CoDer CoDer 14.12.201822:20 ответить ссылка 2.5
А тут херня в другом на самом деле. Так как JS имеет слабую динамическую типизацию, то что угодно может быть чем угодно. То есть написал хорошую функцию, которая работает с числами. А тут какой-то еблан передал в неё null. Таким образом приходится писать проверки на входящие данные, но на все же не напишешь проверки на все и всякие структуры. Из-за подобной поеботы и придумали статические языки поверх JS - Typescript и Flow.
TS и flow не особо поможет, так как это все просто транспайлится в обычный js, а там уже что хочешь можешь передать в публичные методы на стадии выполнения. Просто скажу что JS не такой уже и баганый, если у тебя ровные руки. Для своей специфики, а это работа в вебе, где важна легковесность и функциональность. Если бы он был на уровне java или с#, то в веб бы его никто не запилил.. Другое дело когда у нас куча разработчиков на JS пытается его прихуярить к вещам на которые JS не рассчитан Кстати подобных приколов полно и в других языках, в частности Ruby
CoDer CoDer 15.12.201800:02 ответить ссылка -1.6
TS и флоу вполне себе помогают.

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

Сломать эту хуйню можно только если миксовать тс и жс, но это надо быть отбитым на всю голову.
Psilon Psilon 16.12.201802:02 ответить ссылка 0.1
это проблемы еблана. нужно проверять что прислал сервер или вернула функция - там действительно могут быть null или undefined. А если еблан сознательно пихает строку "hello" в функцию, которая ожидает число - это не твои проблемы. Иначе - скрипты разрастутся до немыслимых размеров и слабая типизация тут будет не плюсом, а минусом.
> это проблемы еблана. нужно проверять что прислал сервер или вернула функция - там действительно могут быть null или undefined

Так ты уж определись - надо проверять или "разрастутся до немыслимых размеров".

> слабая типизация тут будет не плюсом, а минусом.

он начинает что-то подозревать...
Psilon Psilon 16.12.201802:03 ответить ссылка 0.1
я бы бесплатно подрабатывал избиением таких людей
Там идея в том что в случае "больше или равно" идет проверка на "меньше", если false, то значит "больше или равно" - true. И наоборот с "меньше или равно" - проверяется "больше" и возвращается обратный результат.
selfojoy selfojoy 14.12.201822:29 ответить ссылка 11.5
Ебааать
а windiws знает о таких идеях?
Kreolis Kreolis 14.12.201822:48 ответить ссылка -0.2
А винде похер на это
и к чему ты это написал? Какая разница как движок JS обрабатывает мат операции, если шутка про сравнение разных типов?
sulfur sulfur 14.12.201822:57 ответить ссылка -3.6
В смысле? Чувак как раз написал как работает сравнение в JS для данного случая. Нажми F12 зацени еще примеров.
0 > true && ' '
0 > true || ' '
виноват, затупил
sulfur sulfur 15.12.201805:58 ответить ссылка 0.1
Точно.
Прошу заметить:
null >= 0
true
null
Пиздец логично... Биполярная логика какая-то получается.
А не проще было бы отдельно обрабатывать сравнения с null и не париться никакими проверками вообще, тупо выдавать false?
dstwo dstwo 15.12.201802:05 ответить ссылка 0.0
не проще, операторы строгого сравнения в JS сначала преобразовывают операнды к одному типу данных и потом уже сравнивают. но что во что преобразовывается - нету удобной и понятной таблички, нужно читать тонны скучных спецификаций на англ. языке.
да и не нужны эти таблички, просто пиши нормальный код, в неочевидных случаях сам преобразовывай типы к нужному.
А разве там при сравнении '>' или '=' или '
Korsar_U Korsar_U 15.12.201817:58 ответить ссылка -0.3
или '
именно так выглядит натягивание совы на глобус, то есть трёхзначной логики на двузначную
hunam hunam 14.12.201822:40 ответить ссылка 0.9
JavaScript
..буду
проституткой
castaned castaned 14.12.201822:52 ответить ссылка 27.9
null и арифметика. Что может быть безопаснее?
lokivoid lokivoid 14.12.201822:54 ответить ссылка 6.1
только когда null перегоняют в строку
Null и литература
Библия?
В нормальных языках любое сравнение с NULL даёт NULL и нет всей этой поеботы...
Michael13 Michael13 14.12.201823:42 ответить ссылка -0.1
сравнение с null не может давать null так как результат должен быть boolean
NULL - это не тип как бы. Что мешает булеану принять значение NULL?
Эмммм.... Логика?
То же, что мешает делить на ноль
dstwo dstwo 15.12.201802:09 ответить ссылка -0.3
в JS ничто не мешает делить на ноль
Компилятор
Нул - это значине типа Maybe = Some T | None. Т.к. он синглтон, можно его считать отдельным типом.
Psilon Psilon 16.12.201802:06 ответить ссылка -0.2
В плюсах и це NULL физически равен 0. Так что сравнение с нулем может как дать, так и не дать 0.
Причем в це еще и bool нет. Так что там результат сравнения - это 0 или 1.
Ты наверно с NaN перепутал. Любая арифметическая операция с NaN дает NaN, и при этом NaN не равен сам себе.
Что нет?
По твоей же ссылке:
an integer literal with value zero, or a prvalue of type std::nullptr_t (since C++11)

В С++11 он все так же физически равен 0. И в С++20 он также будет 0
Просто неперь у него тип std::nullptr_t, чтобы его можно было кастить к любому указателю, вот и все.
int16 int16 15.12.201802:57 ответить ссылка 0.3
в нормальных языках null не понимает ничего кроме сравнения
В нормальных языках над нуллом можно делать только операции, которые с ним можно сделать. Ордуринг нуллейблов не определен.
Psilon Psilon 16.12.201802:05 ответить ссылка 0.0
Меня всегда радовало Number.isFinite(null) === isFinite(null)
Две разные функции из разных пространств имен дают разный результат. Как неожиданно!
Тут ты, конечно, прав.
Но от функций/методов, имеющих одинаковое название и предназначение логично ожидать одинакового поведения.
Не. Вполне естественно, что какой-то программист хочет сделать функцию, которая учитывает ошибки предшественника, но называет её также, зато кладет в другой НС. Или вот show JQuery или MooTools. Они делают похожие вещи, но, все-таки, они разные. Это нормально. Если бы у них было одинаковое поведение, то одна из них была бы просто лишняя и это бы стало уже странным
isFinite пытается всё превратить в число, так как это - глобальный метод, и в нём null превращается в 0.
Метод объекта Number предполагает получать исключительно числа, и посылает всех нахер если это не так.
всё логично и должно работать точно так же в других языках со слабой типизацией
Если кому интересно, фишка в том, что == - это сравнение чего угодно с чем угодно, а <= - чисто числовое сравнение. Соответственно правила и порядок приведения типов разный.
AjiTae AjiTae 15.12.201800:57 ответить ссылка 2.2
нет.
'hello' < 'hello'
'hello' <= 'hello'
Сравниваются, очевидно, charCode, как числа.
AjiTae AjiTae 16.12.201807:32 ответить ссылка 0.0
как же заебали эти "шутки" от it петросяна.
блять. курите мануалы
пишите проверки
организуйте логику так, чтобы не было разных (или не приводимых) типов данных в вашем коде.
не используйте null блять там где оно не надо.
используйте соответствующие инструменты для разных задач
нет, блять, надо сравнить теплое с мягким, и гнустно хохотать, а то, что скорее всего там тонны говнокода - мы скромно умолчим.

пиздец
b.o.g b.o.g 15.12.201805:19 ответить ссылка -2.1
...следуя этим советам вы сможете написать "hello world!" без единой ошибки
можно написать все, что угодно.
ну и ... не следуя этим правилам даже хелоаорлд не напишешь без ошибок.
b.o.g b.o.g 16.12.201803:44 ответить ссылка -0.3
===
Noxel Noxel 15.12.201816:19 ответить ссылка -0.2
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
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 ¡ndex.js
JavaScript Moment
1	console log(018 == '018');
2	console log(017 == ‘017');
3
■ Default: node index.js
true
false » 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

» 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