Подробнее
¡ndex.js JavaScript Moment 1 console log(018 == '018'); 2 console log(017 == ‘017'); 3 ■ Default: node index.js true false
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,javascript,языки программирования,программирование,it humor,geek,javascript,programming languages,programming
Еще на тему
а интуитивность у каждого своя. в любом языке найдутся аспекты которые кому-то да и неинтуитивны.
если тебе от жс бомбит - работай с другим языком, их полно.
сразу полюбишь js
позавидовал, что результат видно прямо на лету
он пишет, а в браузере сразу правки видны
пока мой проект собирается
Только эта скорость хорошо так нивелируется разностью браузеров что где-то что-то не поддерживается, где-то по другому работает и тд тп. Много горения по этому поводу слышу от жсовцев, хз мб и есть варианты этого избежать
Интересно, статистику возвращенцев на другом браузере ведете? Если да то какой примерно процент переключается?
Боже, как больно видеть такую статистику у любимого браузера.
ну значит спека js объективно говно
как минимум, если движок интерпретирует числа начинающиеся с нуля как восьмиричные, то стоит кидать ошибку при недопустимом символе, а не пытаться интерпретировать это как десятичное число. Текущее поведение не нужно ни при каком кейсе, вообще, НАХУЙ ни в какой случае даже в самом крепком наркотрипе!
Я немного знаком с ЖС и мне нифига не логично.
Никто не знает всю спецификацию, и таких "приколов" должно быть минимум и должно вести себя интуитивно понятно, если хочешь что бы был хороший код (хотя бы в базовых вещах, ладно уж во всяких специфических вещах).
Жс это, имхо, жемчужина алогичности и синтасического сахара который делает только хуже
Чисто ради примера, я за сколько лет в плюсах встретил всего штук 5+- не интуитивного поведения когда пришлось явно лезть в стандарт. А это нихера не простой язык. Как последний пример
if(auto f = foo(); condition)
f= 1
else
f = 2 ??? WTF
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Equality#description
парсинг числовых литералов
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#numeric_literals
конвертация строк в числа
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number#number_coercion
Как все эти ссылки отвечают на вопрос "в каком месте логично?"?
если ты имеешь в виду что эта логика для тебя не интуитивная и требует запоминания странных правил чтобы не допускать ошибок на ровном месте - допустим. это характерное явление для языков не проектировавшихся под те масштабы к которым они в итоге пришли.
Вот это, на самом деле, забавно. И ведь исправить его практически невозможно. Тот же php хотя бы хоть тушкой, хоть чучелом, но становится лучше.
> Никто не знает всю спецификацию
Это минимальный пример с проблемой все-таки
> это характерное явление для языков не проектировавшихся под те масштабы к которым они в итоге пришли.
Это понятно, но можно вместо создания нового сахара который усложняет язык и понимание как он работает, заняться стабилизацией и унификацией.
На крайняк выкатить версию 2 где не будет алогичных приколов
1) Выкатываем версию 2.0
2) Фиксим лишь критикал в 1.0
3) Браузеры вводят поддержку 2.0 и говорят что через Н лет поддержка 1.0 будет урезана, маркирована как опасная или вообще выпилена
4) По чутка девы перепиливают сайты
5) Много мертвых сайтов улетают в небытие, увы.
Рано или поздно прийдется это сделать, ибо такого монстра содержать это ж пиздец
Другой пример — вёрстка — там дело такое, что в современных браузерах даже самые старые сайты выглядят нормально или как минимум адекватно. Я думаю, единицы таких, которые в IE6 выглядели отлично, а в современном хроме поплыла вёрстка.
С флешом, да, с флешом где-то как-то подходящий пример. Но всё равно масштабы несопоставимы. Сколько сайтов сделаны на флеше, а сколько на жс?
Так я и не спорю о проблемах с переходом, я не отрицаю что жс сейчас стандарт веба и он везде, я это понимаю и принимаю полностью. Сама суть о возможности перехода пошагового, не быстрого.
Да, на питоне можно отдельно переделать, но это пришлось переделывать, а те кто не переделывали просто исчезли со временем за ненадобностью/ленью/недостатком финансирования. За условные лет 10 переход вполне реально осуществить как мне кажется
Теперь по жабе[скрипт]. Есть два сервера: на одном заброшенный сайт на жабе, на другом взяли и скрипты на новую. Ладно, два сервера — это условно, потому что сайты могут быть и на одном. И теперь у половины посетителей проблема с первым сайтом, а у половины со вторым.
Масштабируя первую ситуацию на весь интернет — каждый отдельный сервер меняет питон2 на питон3, когда ему это удобно и не доставляя проблем посетителям. Масштабируя вторую — хаос.
Ну да, на питоне не только сайты пишут, но опять же, можно менять каждую конкретную приблуду, не доставляя при этом проблем окружающим и не завися от них.
встроенных интерпретаторов в браузере может быть больше одного
более того, такой браузер уже был: ишак + VBScript
и средство для деференциации скриптов тоже есть (было) - аттрибут language тэга script
ждём всем селом, когда в WASM завезут прямой доступ до DOM API
То бишь, проверка выглядит так:
16 === Number("16")
Вообще, подобного в JS полно, но оно всё рудиментарно.
На пример, ты можешь сокращать используя "~~". И оно даже будет работать. И будет работать быстрее нежели Math.floor
Но зачем?
Сама суть, зачем тащить столько рудиментов которые не дают особо нифига, но при этом генерируют дофига геммороя, я хз.
В тех же плюсах есть проблемы с разростанием и рудиментами, но не настолько обширны.
даже php не настолько угашенный
018 - это уже просто 18, т.к. восьмеричная система включает в себя только цифры от 0 до 7
Например var_u16 = var_u8 нельзя без as, хотя очевидно что 8 бит влезет в 16 без проблем. Нет обязательно надо ему так: var_u16 = var_u8 as u16.
И ползовательский скрипт для greasemonkey\violetmonkey себе написать или чужой поправить. И так далее. И любой такой человек, не обладающий глубокими познаниями спецификаций, может взять и на ровном месте наткнуться на любой из кучи приколов такого рода. См. известное видео.
Такие записи удобны для всяких битовых операций и обычно используются системы по основанию 16 и 2. А восьмеричная - очень редко