Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   для чего такая нестыковка в javascript при использовании математических операторов? (https://javascript.ru/forum/misc/67974-dlya-chego-takaya-nestykovka-v-javascript-pri-ispolzovanii-matematicheskikh-operatorov.html)

vitek-82 18.03.2017 13:35

для чего такая нестыковка в javascript при использовании математических операторов?
 
Я понимаю что по правилам языка javascript при сложении:
'4' + 2 // получаем строку '42', цифра 2 преобр. в строку!

но при аналогичном действии со знаком минус:
'4' - 2 // получаем число 2, строка '4' пеобраз. в число!

Вопрос: я знаю что такие правила, но все же для чего такая нестыковка, есть ли логика?
<script>
alert(typeof('4' + 2)); // string
alert(typeof('4' - 2)); // number
alert(typeof('4' * 2)); // number
alert(typeof('4' / 2)); // number
</script>

ruslan_mart 18.03.2017 13:56

vitek-82, потому что оператор "+" не только для математических манипуляций, но ещё и для сложения строк. В данном случае, идёт прибавление значения к строке.

Paguo-86PK 18.03.2017 16:06

Кaк-то хотелось расширить все эти операторы.
Так, если "+" - конкатенация строк, то:
"abcdef" - 3 -> "abcdef".substr(0, "abcdef".length - 3)
"abc" * 3 -> "abc".repeat(3)
"abc" / "b" -> "abc".split("b")
"abc" % "b" -> "abc".indexOf("b")
и т.д.:-?
P.S.: Почему-то, за 60 лет существования ЯВУ, додумались лишь конкатенацию закрепить за "+"… И то в некоторых языках.
Степень "**"-Фортрана как-то не популярно. Хотя, возводить "строку" в степень - было бы прикольно!
(Некоторые Си-проекты перегружают операторы под строки, но это не приветствуется. Может, из-за отсутствия договорённости? Мол, легче освистать и запретить, чем собраться, сесть и выработать постулаты.)


Часовой пояс GMT +3, время: 00:03.