2

Я изучаю JavaScript.Почему оператор «+» ведет себя ненормально в JavaScript?

Я попытался сделать двойные кавычки вокруг разных цифр в выражении JavaScript, и я был удивлен третьим результатом из нижеприведенных операторов кода.

Рассмотрите приведенные ниже инструкции кода и их вывод в комментарии перед каждой строкой кода.

var x = "5" + 2 + 3; 
document.getElementById("demo").innerHTML = x; //Output is : **523** 

var x = 5 + "2" + 3; 
document.getElementById("demo").innerHTML = x; //Output is : **523** 

var x = 5 + 2 + "3"; 
document.getElementById("demo").innerHTML = x; //Output is : **73** 

Может кто-нибудь объяснить, почему и как оператор «+» ведет себя ненормально в JavaScript?

Почему выходные данные последнего оператора не являются , так как одна из цифр является строкой?

Пожалуйста, объясните мне на простом и ясном языке.

Спасибо.

+0

Javascript работает слева направо, как при выполнении операции поэтому, когда он получает 2 номера его подытоживают и связывают со строкой – pareshm

+0

Помогает ли эта предыдущая дискуссия? http://stackoverflow.com/questions/15340207/java-string-concatenation-with-operator – vielmetti

ответ

3

Javascript выполняет выражения слева направо. Таким образом, в последнем примере он будет делать это:

5 + 2 => 7 
7 + "3" => "73" 

Надежда, что помогает

+0

'5 +" 2 "и' "5" + 2' оцениваются как '52. Это связано не только с порядком оценки, но и из-за правил принуждения. –

+0

Это, конечно, правильно, но у нас есть три слагаемых, поэтому мы не видим «523». –

2

«+» не ведет себя неправильно.

Вы не понимаете правильность концепции. Оператор + действует как оператор конкатенации при использовании со строками и действует как оператор сложения при использовании с цифрами.

0

разбора заявления слева направо

var x = "5" + 2 + 3; 
=> ("5" + 2) + 3; //the + works as string concatenation since one operand is a string 
=> "52" + 3 
=> "523" 

    var x = 5 + "2" + 3; 
    //same for this one as above 

var x = 5 + 2 + "3"; 
    => (5 + 2) + "3"; //the + works as an add operator because both oerands are numbers 
    => 7 + "3"   //the + works as string concatenation since one operand is a string 
    => "73" 
2

Оператор + делает две вещи в JavaScript. Для строк он объединяет (объединяет их). Для чисел это добавляет их. Если вы используете + на комбинацию числа и строки, javascript принуждает к чему-то, над чем он может действовать.

В вашем случае string+ a number принуждает к двум строкам. Затем он объединяется.

var x = "5" + 2 + 3; 
// coerced by runtime into var x = "5" + "2" + "3"; 
// x = "523"; 

В вашем последнем случае у вас есть два номера перед строкой. В этом случае, пинки порядок вычисления в. Среда выполнения сначала вычисляет арифметическое , прежде чем принуждая его в строку для конкатенации

var x = 5 + 2 + "3"; 
//arithmetic performed var x = 7 + "3"; 
//coerced to var x = "7" + "3"; 
//x = "73"; 
1

в var x= 5 + "2" + 3, первая операция добавления обусловленно один из операндов является строка.

в var x = 5 + 2 + "3", первые два операнда являются целыми числами, поэтому он будет добавлен, а затем добавлен со значением String 3, поэтому вы получаете 73.

В конце концов, ответ прост, JS выражение здесь выполняет с левой стороны, так как все операторы здесь же (+, равный приоритет)

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