功能返回语句的代码说明

时间:2018-10-09 20:34:00

标签: javascript

我目前正在学习javascript ...存在一个特殊的挑战,我无法弄清楚为什么输出是原样的..所以这是代码:

function addBinary(a,b) {

    var sum = a + b;
    var res= "";
    while(sum > 0) {
        res = sum % 2 + res;
        sum = Math.floor(sum/2);
    }
    return res;

}
alert(addBinary(1,2));

//输出为11

在这个addBinary函数中,我不明白的是为什么res = sum % 2 + res;在第一次迭代后=== 1时是一个空字符串。

我了解模运算符和3%2 = 1背后的逻辑;

但是我没有得到的是+ res表达式中的res = sum % 2 + res;

任何解释将不胜感激。

2 个答案:

答案 0 :(得分:0)

它需要从余数运算符和先前收集的值中提取01并将其分配给res

       1       10  -> 110
res = sum % 2 + res;

答案 1 :(得分:0)

  

但是我没有得到的是res中的+ res =总和%2 + res;表达。

好的,因此在第一次迭代之后,第一个变量就存储在res中:

 res = 1 + "" /*res*/

由于res以前是一个空字符串,因此+将两个字符串都串联在一起,因此res现在包含"1"。现在循环继续进行,因为仍需要1,因此在下一次迭代中,sum % 2再次为1,其行为:

 res = 1 + "1" /*res*/

所以我们最终得到结果"11"