2015-05-22 1 views
1

Когда я использую prompt() метод в JavaScript следующим образом:JavaScript вопрос типажей в то время как дополнение

var n=prompt("Enter an integer"); //passing 2 as value 
n=(n+n); 
document.writeln("n+n value is:"+n); 

Затем (n+n) получает сцепляются, как 22 вместо того, как 4

Но когда я не использую prompt() то есть. :

var n=2; 
n=(n+n) 
document.writeln("n+n value is:"+n);  

затем он отлично работает для добавления и ответа 4

Почему это так?

ответ

0

prompt("Enter an integer"); возвращается string

преобразовывают его после того, как вы можете использовать parseInt()

var n = parseInt(prompt("Enter an integer")); 

SEE FIDDLE DEMO

0

Использование ParseInt для преобразования строки в Int

var n = parseInt(prompt("Enter an integer")); //passing 2 as value 
n=(n+n); 
document.writeln("n+n value is:"+n); 

Подробнее here

0

Изменить

var n =prompt("Enter an integer") 

в

var n = Number(prompt("Enter an integer")) 

Как будто вы console.log(typeof n) вы получите string что означает п на самом деле является строкой.

Так конкатенация

n = '2' + '2'; 

является '22'

Следовательно, вам необходимо изменить его номер. Для этого вы можете использовать Number() или parseInt().

0

Переменная, объявленная с помощью типа данных var, может содержать любую переменную, которая присваивается ей в момент времени.

например.

var j = 1; // here j will be an integer datatype and will act as int after this 
var j = "1"; //here j will be a string datatype and will act as int after this 

в первом случае

var n=prompt("Enter an integer"); 

здесь строка будет сохранена в переменной 'п'. следовательно, n будет действовать как строковая переменная. Поэтому (n + n) приведет к конкатенации двух строк.

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

var n = 2; 

В здесь п держит целое число, следовательно, п действует как INT переменная. Вот почему (n + n) приводит к SUM вместо конкатенации.

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