первый урок IRL?
Если меня разбудят через 50 лет и спросят: О чем шутят в IT-юморе ?
Я отвечу: математика JavaScript и сложность C++
Я отвечу: математика JavaScript и сложность C++
Тебя не разбудят
А как заставить прибавить?
5+3 без кавычек.
Привести тип к числу. Number('5') + 3. Тогда будет использован не оператор конкатенации, а оператор сложения.
Только сейчас заметил, что третий пример неверный.
5+-'2'=3
5+-'2'=3
yep
А зачем такой ебланизм нужен? Чтобы переменные не объявлять?
Ну да. Вроде как проще для обучения и неплохо в небольших скриптах.
Чтобы писать меньше, а делать больше. Кое-кто называет это "выразительностью языка". И как язык коротких сценариев EcmaScript от такой лексики только выигрывал на момент своего появления -- лаконично позволял добавлять динамики в статические документы. Оттуда же, например, прототипный извод ООП (при отсутствии полноценных классов до недавнего ES6). Однако с того момента его основное назначение сильно изменилось, и на нём хуярят фреймворки общего назначения.
Автоматическое приведение типов, чтобы вместо много строк написать одну короткую.
Называется конкатенация и интерполяция вроде.
Называется конкатенация и интерполяция вроде.
На самом деле очень удобно, но на этапе обучения от этого горит жопа.
Чтобы такой хуйни не было, люди изобрели TypeScript.
Но это для душнил и натуралов.
Но это для душнил и натуралов.
Чуть ниже написал. Язык создавался чтобы свистеть и пердеть в браузере, чисто для того, чтобы подвигать элементы, нарисовать снежинки на фоне. И ошибки писать некуда и вообще ненужно, потому сделано так, что будет как попало выполняться, но не пвдать, какие бы данные ни встретились.
Ошибок не будет, если ты разрешишь творить любую хуйню и не считать это ошибкой
Ого, столько мудрости за раз.
В плюсах у тебя это не получится ещё на этапе написания кода и компиляции. Потому что в плюсах, как и во всех нормальных языках, переменные всегда имеют тип, структура классов и типы полей всегда известны заранее, и типы функций и методов, как принимаемые, так и возвращаемые, известны.
Но самое важное - код при ошибке, если эта ошибка не была предусмотрена и для неё не написана обработка заранее, никогда не должен продолжать работу в ошибочном стейте. Это наихудшее из возможных - продолжить абы-как.
Но самое важное - код при ошибке, если эта ошибка не была предусмотрена и для неё не написана обработка заранее, никогда не должен продолжать работу в ошибочном стейте. Это наихудшее из возможных - продолжить абы-как.
А это и не математика, а ебанутая парадигма языка, родившаяся из мысли, что раз всё равно на клиенте делается, ошибки выводить некуда, значит, надо, чтобы вообще не происходило ошибок.
Ну и то, что планировался жабаскрипт чисто для визуальных эффектов изначально. Где похуй на ошибки.
Ну и то, что планировался жабаскрипт чисто для визуальных эффектов изначально. Где похуй на ошибки.
Я не кодер, конечно, но вроде Ява скрипт вполне себе складывает целочисленные значения дефолтным плюсиком, если они не были объявлены как текст? Почему бабка ударилась в конкатенацию?
Потому что это прикол для неайтишников от неайтишников.
Затрахали уже по десятому кругу "смешно шутить" про неявное преобразование типов жабаскрипта.
Динамическая типизация. Новичок может напороться нечаянно.
в пайтоне это не проблема.
Если хочешь сложить два числа, просто назнаешь переменную нужным числом (x=1, y=2) и пишешь что-то типа "x+y" и получаешь нужный результат.
Хочешь соединить два символа, пишешь x='1', y='2', получаешь в "x+y" равное '12' и это текст
Если хочешь сложить два числа, просто назнаешь переменную нужным числом (x=1, y=2) и пишешь что-то типа "x+y" и получаешь нужный результат.
Хочешь соединить два символа, пишешь x='1', y='2', получаешь в "x+y" равное '12' и это текст
Спасибо за очевидное пояснение. Лично я в курсе: имею многолетнюю практику в этом языке.
Пост, как бы, про особенности другого языка, но даже если взять Python, то и он позволяет нечаянно напороться на неявное преобразование.
Пост, как бы, про особенности другого языка, но даже если взять Python, то и он позволяет нечаянно напороться на неявное преобразование.
$9$9
В документации есть целая страница по приоритету операторов и их перегрузке. Но не многим дано читать документацию, сейчас достаточно посмотреть ролик на ютубе.
И да, в JS нет целочисленных значений:)
И да, в JS нет целочисленных значений:)
Разумеется, любую дичь можно задокументировать, и потом слать всех в документацию.
То, что при этом язык нарушает принцип наименьшей неожиданности, выдавать за фичу. Ну, потому что а хули ещё делать, не исправлять же.
То, что при этом язык нарушает принцип наименьшей неожиданности, выдавать за фичу. Ну, потому что а хули ещё делать, не исправлять же.
Дичь -- это пытаться сложить строку и число, не приведя типов. Перегрузка операторов тоже древнее зло. Но чот на плюсы никто не ругается в мемах за это.
Хахаха, а он сможет 11 людям эти книги перепродать!
Чтобы написать коммент, необходимо залогиниться