Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.03.2017, 13:35
Аспирант
Отправить личное сообщение для vitek-82 Посмотреть профиль Найти все сообщения от vitek-82
 
Регистрация: 18.03.2017
Сообщений: 30

для чего такая нестыковка в 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>
Ответить с цитированием
  #2 (permalink)  
Старый 18.03.2017, 13:56
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

vitek-82, потому что оператор "+" не только для математических манипуляций, но ещё и для сложения строк. В данном случае, идёт прибавление значения к строке.
Ответить с цитированием
  #3 (permalink)  
Старый 18.03.2017, 16:06
Аватар для Paguo-86PK
Профессор
Отправить личное сообщение для Paguo-86PK Посмотреть профиль Найти все сообщения от Paguo-86PK
 
Регистрация: 16.09.2009
Сообщений: 253

К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 лет существования ЯВУ, додумались лишь конкатенацию закрепить за "+"… И то в некоторых языках.
Степень "**"-Фортрана как-то не популярно. Хотя, возводить "строку" в степень - было бы прикольно!
(Некоторые Си-проекты перегружают операторы под строки, но это не приветствуется. Может, из-за отсутствия договорённости? Мол, легче освистать и запретить, чем собраться, сесть и выработать постулаты.)

Последний раз редактировалось Paguo-86PK, 18.03.2017 в 16:13.
Ответить с цитированием
  #4 (permalink)  
Старый 18.03.2017, 17:07
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от Paguo-86PK Посмотреть сообщение
Степень "**"-Фортрана как-то не популярно.
ES7 вводит оператор **, а Chrome 52 и Firefox 52 уже поддерживают. Exponentiation
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Петербург: Javascript + Canvas. Разработчик для портирования игры. В офис. waxattack Работа 0 21.07.2016 14:06
Метки для map area при использовании maphilight IONEX jQuery 1 09.03.2015 13:21
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00
Проблема при воспроизведении аудио при использовании jplayer nemish Events/DOM/Window 0 01.12.2011 16:15
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34