有人可以帮助解释为什么它返回不同的金额吗?

时间:2019-05-28 22:06:38

标签: javascript

var x = 10 + Number(“ 1” +“ 6”); console.log(x);

返回:26


var y = 10 +1 + 6; console.log(y);

返回:17

3 个答案:

答案 0 :(得分:4)

您要在Number(...)中一起添加两个字符串:

"1" + "6" = "16"

因此,该行基本上可以归结为:

var x = 10 + Number( "16" )
> 26

答案 1 :(得分:0)

在您的第一个示例中,Number(“ 1” +“ 6”),“ 1”和“ 6”作为字符串求值(由于引号)。当JS添加字符串时,它将它们串联起来,因此“ 1” +“ 6”变成“ 16”,就像“ Hello” +“ world”变成“ Hello world”一样。

在第二个示例中,所有数字都被视为数字,因此可以按预期添加它们。

答案 2 :(得分:0)

“ 1” +“ 6” =“ 16”:2个字符串的串联 Number(“ 1” +“ 6”)= Number(“ 16”)= 16

10 + 16 = 26

    let x = 10 + Number("1") + Number("6"); //for x to equal 17

这是一个我用来对数字求和的函数,无论参数是数字还是字符串(如果任何参数不是数字,则返回null)

function sumNumbers(){
    let result = 0;
    for(arg of arguments){
        let nArg = Number(arg);
        if(isNaN(nArg)){
            return null;
        };
        result+=nArg; 
    }
    return result;
}