添加时JavaScript类型转换问题

时间:2015-05-22 09:17:10

标签: javascript

当我在JavaScript中使用prompt()方法时,如下所示:

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

为什么会这样?

4 个答案:

答案 0 :(得分:0)

使用parseInt将String转换为Int

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

更多信息here

答案 1 :(得分:0)

prompt("Enter an integer");返回string

转换后,您可以使用parseInt()

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

<强> SEE FIDDLE DEMO

答案 2 :(得分:0)

更改

echo "$list" | wc -w

i="$lijst" | wc -w
echo i

就像你var n =prompt("Enter an integer") 一样,你会得到一个var n = Number( prompt("Enter an integer") ) ,这意味着n实际上是一个字符串。

的串联
console.log(typeof n)

string

因此您需要将其更改为数字。为此,您可以使用 Number() parseInt()

答案 3 :(得分: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 + n)将导致两个字符串的连接

在你的第二个案例中

var n = 2;

在这里,n持有一个整数,因此n充当int变量。 这就是为什么(n + n)导致SUM而不是连接。