传递数组函数使我在控制台中未定义

时间:2017-11-29 03:09:42

标签: javascript arrays

在下面的 javascript 代码中,如果我只打印数组传递给函数的nums。它打印数组以及给出undefined。所以下面的逻辑给出了答案,但在下一行中它打印出undefined。

function getSecondLargest(nums) {

       let deceding = nums.sort(function(a, b){return b-a});


    for(let i = 0; i<deceding.length ; i++)
        {
            if(deceding[i]>deceding[i+1])
                {
                    console.log(deceding[i+1]);
                    break;
                }
        }


}

2 个答案:

答案 0 :(得分:0)

假装deceding是[0, 1, 2]

您有i < deceding.length,因此i的范围介于0和2之间(小于长度,即3)。

接下来你做console.log(deceding[i + 1]);,但是对于循环的后续迭代,i + 1将大于2,这是数组的最后一个索引,这意味着它是未定义的。即,你试图获得未定义的deceding[3]

答案 1 :(得分:-1)

我邀请您在chrome console上运行此功能。 实际上你的功能是什么都没有。所以它是控制台undefined。 这和你得到的一样吗? http://prntscr.com/hgma9g

enter image description here

chrome控制台总是打印出从最后一行代码返回的内容。因此,如果这是一个赋值或函数调用而没有返回值,它将打印undefined。所以不要担心,你的功能按预期工作。

有一种方法可以通过分配并返回要在函数中登录的值来传递它。 :)