Комментарии 33
В этих примерах такие эффекты не более чем забавные задачки на сообразительность, а если что-то подобное возникнет в реальном коде? )
Использование результата функции (особенно если return в нескольких местах — и в одном случайно возвращается не тот тип, что в остальных);
Ошибки при работе со сложными составными объектами
Там вроде бы другое?
А это было раньше:
- https://habr.com/ru/post/456344/
- https://habrahabr.ru/company/mailru/blog/335292/#banana
https://habr.com/ru/post/479496/ - https://habrahabr.ru/company/mailru/blog/335292/#eto-fail
- https://habrahabr.ru/company/mailru/blog/335292/#-yavlyaetsya-istinnovatym-no-ne-true
- https://habr.com/ru/company/mailru/blog/335292/#ekvivalentnost-massivov--eto-chudovische
- https://habr.com/ru/company/mailru/blog/335292/#zabavnaya-matematika
Ну и (currentValue) => parseInt(currentValue)
поправить бы до (currentValue) => parseInt(currentValue, 10)
.
Там вроде бы другое?
Как минимум,
('b' + 'a' + + 'a' + 'a').toLowerCase()
там есть.Я про то, что повторение шуток из чужих постов может быть и ненамеренным, но повторение шуток из своего собственного поста месячной давности…
А зачем в этом случае в parseInt передавать второй параметр, если он по умолчанию равен 10?
По ссылке выше поясняется, что не всегда, поэтому стоит указывать.
Потому что переводы оптом всего подряд без разбора, ради небольшой рекламной плашки в конце статьи. Статья заплюсована — плашке быть. Статья заминусована — значит скоро её сокроют, либо накрутят ботами, ибо на текущий момент в аккаунте ru_vds только статьи c рейтингом примерно около +30 (размер штата ботов плюсаторов?). Ах да, ещё они подобные моему комменты любят молча минусить без ответа.
Да как вы задрали-то! Я читал и думал "пожалуйста не скатитесь в складывание цифр и строк, пожалуйста, пожалуйста".
Меня уже не столько злят вот эти "особенности", как то, сколько контента они производят и как они затмевают все остальное. Казалось бы, ну напиши ты там о каких-то необычных вещах в модульной системе или там особенности Map/Set.
Так нет же, надо в 9007199254740991ый раз обсасывать, что там будет если ты сложишь пустой массив с числом и сравнишь полученный результат с левой ногой.
а что-то ценное по JS редко пишут, потому что для этого напрячься нужно. да и не модно. всегда есть «язык отпущения». раньше это была пыха, теперь JS.
«Рискну быть зазвездённым», но
“””
‘1’ mod 0 == 1
‘7’ mod 1 == NaN
“””
это логично?
Довольно смело вычислять остаток от деления на ноль.
Опять же "11" mod 2 может быть равным 3 только в каком-либо параллельном мире.
Считаю, не надо догадываться. Примеры искусственные, в жизни не понадобятся.
Код должен быть clearly понятным, и self-documented.
А эти особенности JS — только для археологов.
Разбор такого кода, по мнению автора статьи, поможет всем желающим лучше разобраться в JavaScript, в очень странном, но многими любимом языке.
https://habr.com/ru/company/ruvds/blog/499670/#comment_21560988
Понятно, что так язык устроен, но почему?
Потому что так было в Java и в C++, и потому что PHP на момент создания JS был хобби-проектом одного гика.
А как PHP отличает конкатенацию от чтения свойства в таких случаях 'string'.someVar
? Это конкатенация с переменной someVar или чтение свойства someVar? Знак $ в начале переменных в этом как-то замешан?
->
Вообще в PHP обращение к свойству/методу зависит от. В одних случаях используются [] (например associative_array['key']), в других случаяхит от, знак -> (object->method()), в третьих случаях — знак :: (ClassName::method());
о, спасибо
я больше 5 лет с JS и до сих пор не знал о таком
да и никто не знал наверное
вы открыли глаза
очень полезная статья
/sarcasm
{} + {} // -> '[object Object][object Object]'
— тут тоже пара фигурных скобок может интерпретироваться как блок кода.Firefox:
{} + {} // -> NaN
Очень странные дела: JavaScript