我有以下代码:
if(netAnnualBilling == null){
netAnnualBilling = 0;
parseFloat(netAnnualBilling);
}
parseFloat(netAnnualBilling);
annualBillingCount = (annualBillingCount + netAnnualBilling);
parseFloat(annualBillingCount);
Run Code Online (Sandbox Code Playgroud)
我的两个变量netAnnualBilling和annualBillingCount都是类型号.但是,当我到达这一行时:
annualBillingCount = (annualBillingCount + netAnnualBilling);
Run Code Online (Sandbox Code Playgroud)
javascript似乎将annualBillingCount转换为String类型,并将这两个数字附加在一起,而不是像它应该的那样添加或减去.例:
annualBillingCount = 0;
netAnnualBilling = -1403.30
The result of the above code will show annualBillingCount to be equal to : 0-1403.80
Run Code Online (Sandbox Code Playgroud)
每次弹出这些变量时我都试过ParseFloat,但我没有运气.这是怎么回事?
如果要确保将变量用作数字,可以简单地添加一元加运算符:
annualBillingCount = +annualBillingCount + +netAnnualBilling;
Run Code Online (Sandbox Code Playgroud)
将强制将每个操作数视为一个数字.
编辑下面 是一个基本的小提琴,显示添加两个字符串,使用一元投射的不同用法,使用下面的代码:
var onetwo = "12";
var threefour = "34";
alert(onetwo + threefour); // string + string, so "12" + "34" = "1234"
alert(+onetwo + threefour); // number + string, so 12 + "34" = "12" + "34" = "1234"
alert(onetwo + +threefour); // string + number, second will be coerced back to string, so "12" + "34" = "1234"
alert(+onetwo + +threefour); // number + number, so 12 + 34 = 46
Run Code Online (Sandbox Code Playgroud)