停止javascript自动从十进制转换为字符串

1 javascript casting

我有以下代码:

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,但我没有运气.这是怎么回事?

Sco*_*ica 6

如果要确保将变量用作数字,可以简单地添加一元加运算符:

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)