2017-02-08 2 views
0

Когда мы выполняем операцию суммирования между двумя элементами, его необходимо преобразовать в число, не конвертируя его, слияние их потому что element.val() возвращает строку. Но когда мы выполняем другие операции, такие как умножение, вычитание или деление, он дает ожидаемый результат без выполнения какого-либо типа.Почему оператор «+» ведет себя отличным от операторов «*», «/» и «-» в javascript

function add() 
 
{ 
 
    alert($("#first").val() + $("#second").val()); 
 
} 
 
function divide() 
 
{ 
 
    alert($("#first").val()/$("#second").val()); 
 
} 
 
function multi() 
 
{ 
 
    alert($("#first").val() * $("#second").val()); 
 
} 
 
function subst() 
 
{ 
 
    alert($("#first").val() - $("#second").val()); 
 
}
<input type="text" Id="first" /> 
 
<input type="text" Id="second" /> 
 
<input type="button" Id="add" onclick="add()" value="+"/> 
 
<input type="button" Id="divide" onclick="divide()" value="/"/> 
 
<input type="button" Id="multi" onclick="multi()" value="*" /> 
 
<input type="button" Id="subst" onclick="subst()" value="-"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

+0

см. Http://stackoverflow.com/q/13953939/6868584 – Aidin

+0

Возможный дубликат [Как заставить JS выполнять математику вместо того, чтобы поместить две строки вместе) (http://stackoverflow.com/questions/ 4841373/how-to-force-js-to-do-math-вместо-put-two-strings-together) –

+0

здесь некоторые варианты использования и [пояснения] (http://www.java2s.com/Tutorials/ Javascript/учебник/0110__Javascript_arithmetic_operators.htm) – crowchirp

ответ

6

+ оператор используется либо для конкатенации строк или для добавления чисел (interpretter будет способствовать конкатенации, если один из операндов является строка). Но /, * и % используются только с числами, поэтому интерпретатор вынужден видеть операнды как числа.

Для получения более подробного объяснения здесь приведено answer. Я дал около двух дней назад для аналогичного вопроса. (Это довольно долго, поэтому я не буду повторять его здесь снова).

Смежные вопросы