Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
138 views
in Technique[技术] by (71.8m points)

JS中IF的逻辑问题

我通过JS调用WordPress的API。

number的值有时候时00,我想把这些值为00的,都变为0,这样就可以求和了。

大概代码如下:

var sum = 0;
for (i = 0; i < postsData.length;  i++) { 
    var x =postsData[i].number;
    if (x === "00") {
       x= 0;
       sum += x;
       } else {sum += x;}
}

但结果是错误的,当number是00时,则不显示求和结果,也没有错误提示.

补充:
求和的代码大概是这样的:

if (sum > 0 ) { document.getElementById("test").innerHTML = sum; }

原始代码比较复杂,是一个Nested loop.
number是字符串。
当number的值都不是两个零时,计算结果正确。
但当number的其中一个值为两个零时,不显示计算结果,也没有错误提示。我感觉是if这块写错了。当一个函数等于某个值时,可以再给这个函数赋予另一个值吗?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
var sumFun = function(postsData_){
    var sum = 0;
    for (var i = 0; i < postsData_.length;  i++) { 
        var x =postsData_[i];
        if (x === "00") {
           x= 0;
           sum += x;
           } else {
           sum += x;
           }
    }
    return sum;
}
var postsData =['00','0','1',00,2,3];//字符串和数字混合,第1个00字符串转成数字0,相加sum还是数值0,第2个为字符串0,那么就转为字符串拼接,后续都是字符串拼接操作
console.log(sumFun(postsData));//001023 字符串
postsData =[00,1,2,3];//都是数字,数值求和
console.log(sumFun(postsData));//001023

+操作符在JS中,有如下规则

  • 当2个操作数都是数字时,执行数值加法操作;
  • 当2个操作数都是字符串是,执行字符串拼接操作
  • 优先考虑进行字符串拼接
  • 如果其中一个操作数为对象,那么就会用调用valueOf方法(日期对象调用toString方法)转成原始类型
  • 原始类型包括字符串,数值,布尔类型,null,undefined,
  • 操作数都是原始值后,如果一个操作数为字符串,那么另一个操作数也转成字符串,进行字符串拼接操作。
  • 否则,2个操作数都将转成数字或NaN,进行加法操作

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...