我的JavaScript中有两个变量'a'和'b',我想将它们加在一起 - 我假设这段代码:
var a = 10;
var b = 30
var varible = a + b;
这个,把两个数字放在一起......任何想法为什么......结果应该是40?
答案 0 :(得分:4)
你可能有字符串而不是整数。那是你的代码真的是这样的:
var a = "10";
var b = "30";
var c = a + b; // "1030"
有several ways将字符串转换为整数:
a = parseInt(a, 10); // Parse the string
b = b * 1; // Force interpretation as number
答案 1 :(得分:2)
new
是一个保留字,我在任何情况下都会使用别的东西。
使用正常的变量名c
,它对我有用:
var a = 10;
var b = 30
var c = a + b;
alert(c);
做了预期并提醒40
答案 2 :(得分:1)
new是JavaScript中的关键字。你不应该用它来声明你的变量或函数。将变量名称从new更改为其他内容
答案 3 :(得分:1)
你确定你没有这样做:
var a = '30';
var b = '40';
在这里,我将'30'显示为字符串而不是数字,我希望“+”运算符能够连接两个字符串。由于这是一个人为的代码,您可能无法完全确定您的变量最初分配的位置或它们具有的类型。您可以这样检查:
var a = '30';
var b = '40';
alert( typeof(a) + '\n' + typeof(b) );
如果其中任何一个说'对象'或'字符串'而不是'数字',这就是你的问题。这种情况可能会发生,你没想到的是输入。假设你有这样的代码:
<input id="a" value="30" />
<input id="b" value="40" />
<script language="javascript">
var a = document.getElementById('a').value;
var b = document.getElementById('b').value;
</script>
这里,文本输入的值最初总是一个字符串。
如果您想首先将变量转换为数字,则应使用myVar - 0
来强制数字操作或更正式的parseInt()
或{{1函数(不要忘记parseFloat()
的基数参数)。并始终在结果上查看parseInt()
。
答案 4 :(得分:1)
我真的很惊讶,直到现在还没有人提出明显的问题:使用JavaScript“投射”(我在引号中设置它,因为它不是真正的投射)。
var a = "1"; // string
var b = Number(a); // number
var c = String (b); // string again
a + b; // "11"
b + a; // 2
a + c; // "11"
现在,为什么这不是真正的演员?因为您不创建“number”类型的新变量,而是创建一个新的“Number”对象,并使用可能是数字的东西对其进行初始化。
答案 5 :(得分:0)
一个或两个是字符串。如果你从HTML输入或其他东西获得值,他们肯定是。使用parseInt确保它们都是整数:
var newValue = parseInt(a,10) + parseInt(b,10);
此外,'new'是一个关键字。您不能将其用于变量名称:)