Какая логика у JavaScript в Математике?

Почему JavaScript считает что

0-600= -599

0+600= 599 ???

Что я сделал не так?

<script>
        function validate() {
            // get the input
            var x = document.forms["input_form"]["aterm1"].value;
            var y = document.forms["input_form"]["aterm2"].value;

            // output the result (or errors)
            document.getElementById("1").innerHTML = "<h>" + (x +++ 600) + ", " + (y +++ 600) + "</h>";
            document.getElementById("2").innerHTML = "<h>" + (x --- 600) + ", " + (y --- 600) + "</h>";
            document.getElementById("4").innerHTML = "<h>" + (x +++ 600) + ", " + (y --- 600) + "</h>";
            document.getElementById("3").innerHTML = "<h>" + (x --- 600) + ", " + (y +++ 600) + "</h>";
        }

    </script>

1


Ответы (2 шт):

Автор решения: Aziz Umarov

Логика простая просто нужно немного получить JavaScript, а точнее преобразования типов. У вас в инпутах лежать строки, чтоб были числа нужно их преобразовать в число.

let x = '0';
console.log((x)+++600);
x= (+'0')+600;
console.log(x);
x= '0'+600;
console.log(x);

→ Ссылка
Автор решения: Павел Ериков

Операторов +++ и --- в javascript нет. Такая записать воспринимается как ++ +.

Чтобы корректно посчитать, то что вам надо, нужно спарсить из строки value в целочисленный тип int, функцией parseInt(string, base).

Вот пример в вашем случае:

function validate() {
  // get the input
  var x = parseInt(document.forms["input_form"]["aterm1"].value, 10);
  //Если пользователь ничего не ввел, то дефолт значение = 0
  if(isNaN(x)) x = 0;
  var y = parseInt(document.forms["input_form"]["aterm2"].value, 10);
  if(isNaN(y)) y = 0;

  // output the result (or errors)
  document.getElementById("1").innerHTML = "<h>" + (x + 600) + ", " + (y + 600) + "</h>";
  document.getElementById("2").innerHTML = "<h>" + (x - 600) + ", " + (y - 600) + "</h>";
  document.getElementById("4").innerHTML = "<h>" + (x + 600) + ", " + (y - 600) + "</h>";
  document.getElementById("3").innerHTML = "<h>" + (x - 600) + ", " + (y + 600) + "</h>";
}

 
<form id="input_form">
<input id="aterm1">
<input id="aterm2">

<p id="1">
</p>
<p id="2">
</p>
<p id="3">
</p>
<p id="4">
</p>

<input type="button" onclick="validate()" value="Click">
</form>

→ Ссылка