为什么我在添加所有参数时都会获得NaN?

时间:2016-05-26 04:18:17

标签: javascript

我正在尝试创建一个将所有参数添加到一起的函数。我一直在NaN。我做错了什么?

function sum() {
       var n = arguments.length;
       var total = 0;
    for(var i = 0; i < n; i++) {
        // code here
        total += n[i];
    }
    return total;
}

sum(1,2,3,4);

3 个答案:

答案 0 :(得分:2)

您需要从 arguments 获取价值,其中n只是一个数字,其长度为 arguments 和{ {1}}将n[i]。添加undefined结果为undefined

&#13;
&#13;
NaN
&#13;
&#13;
&#13;

答案 1 :(得分:1)

什么是n[i];?由于n应该只包含参数array的长度,因此它本身不是array

您需要将total += n[i];替换为total += arguments[i];

答案 2 :(得分:0)

javaScript的一个典型缺点是关于NaN(非数字)的基本原则是。

NaN(不等于任何东西) - &gt;当它发生时 i)未定义或错误操作的结果

ii)有毒:任何以Nan作为输入的算术运算都会产生NaN。

所以在你的代码中:undefined(n [i])+ number = NaN

<script>

        function sum() {
            var n = arguments.length;
            var total = 0;
            for (var i = 0; i < n; i++) {
                // code here
                total += arguments[i];
            }
            return total;//returns 10
        }
        sum(1, 2, 3, 4);

希望这有助于/服务于目的