[英]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]
。
我请您在chrome console
上运行此功能。 实际上,您的函数什么也不返回。 因此它是控制台undefined
。 这和你得到的一样吗? http://prntscr.com/hgma9g
chrome控制台始终打印出从最后一行代码返回的内容。 因此,如果这是一个赋值或函数调用而没有返回值,则它将打印undefined
。 所以不用担心,您的功能按预期工作。
有一种方法可以通过赋值并返回您要在函数中登录的值来进行传递。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.