繁体   English   中英

传递数组不起作用使我在控制台中未定义

[英]Passing an array infunction gives me undefined in console

在下面的javascript代码中,如果我仅打印将数组传递给函数的数字。 它打印数组并给出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;
                }
        }


}

假装为[0, 1, 2]

您有i < deceding.length ,所以i范围是0到2(小于length,即3)。

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

在此处输入图片说明

您可以更改执行环境吗? 我从未在节点中看到undefined

我请您在chrome console上运行此功能。 实际上,您的函数什么也不返回。 因此它是控制台undefined 这和你得到的一样吗? http://prntscr.com/hgma9g

在此处输入图片说明

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

有一种方法可以通过赋值并返回您要在函数中登录的值来进行传递。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM