Роман О.
14 сообщений
#2 года назад
Я вот изучаю js и решил кое что проверить.
console.log("35" + "25" ) - результат 3525
console.log("35" +- "25" - результат 35-25
И тут я думаю, ну мб просто js считает что "-" это идет дополнительно к строке 25, но потом я решил начать с минуса
console.log("35" - "25" - результат 10
console.log("35" -+ "25" - результат 10
console.log("35" -+- "25" - результат так же 10, но уже
console.log("35" -+-+ "25" - результат 60

И вот мне не понятно, почему так? Как это работает? Сначало думал, оно идет типа первый минус, значит вычитает, потом + додает, минус вычитает и т.д. Но оказалось что это не так.
Если кто то знает, объясните пожалуйста



вот код на jsfidle. А то тут смайлики создаются
Евгений К.
731 сообщение
#2 года назад
Все просто )

js НЕ строго типизированный язык. Почитайте про преобразование типов
Приложения:
  • 817 КБ
Мирон Яцкевич
5629 сообщений
#2 года назад
Прекрасный язык высокого уровня 

Я вот когда-то работал с С, С++. В частности с Microsoft. И это просто как сравнивать Пальма, бананы и Тамбов )

MasterRoman, это Вы еще до вещественных чисел не добрались ) Также следует понимать, что высокий уровень предполагает менее строгий контроль и опасность его утраты 

Еще можно почитать о его развитии, node js... )
Роман О.
14 сообщений
#2 года назад
crus94, Да я не совсем об этом. А о том, как работает то, что если -+- соединяет строки. Типа нигде не пишет и не говорят об этом. Я не знаю как это правильно объяснить. Даже если писать +-+-+-+-+-+-+-+-+-... то всеравно будет работать, но с каждым добавление нового "+" либо "-", результат будет менятся.
Артем Л.
11416 сообщений
#2 года назад
MasterRoman, JS волшебный язык, особенно когда начнутся вычисления :-) 
Вы вдруг обнаружите, что  a + b не будет равно 0.3, где var a = 0.1; var b = 0.2;
Андрей М.
295 сообщений
#2 года назад
+ используется для соединения строк также это просто +, я не владею js во всех деталях и просто использую скобочки.

также недавно заметил что пустое значение в разных браузерах может отличатся. но не уверен точно.

Всего знать и запомнить невозможно но главно понимать суть и принципы решения.
Юрий Ц.
19 сообщений
#2 года назад
Разные действия = разный результат. Если складываем, то строки не преобразуются, а просто соединяются. Если вычитаем, то строка преобразуется в число
Мирон Яцкевич
5629 сообщений
#2 года назад
Hungry_Hunter, js отлично справляется с вычислениями без уточнений и сочетаниях целых и с плавающей запятой в вычислениях.

Но... Результаты вычислений отличается от десктопного калькулятора Linux )

Мраки при сравнениях Поэтому при сравнениях чисел с плав. запятой лучше использовать свои ф-ции заточенные под конкретный проект

MasterRoman, тот же совет. Если есть сомнения лучше использовать свои ф-ции