在下面的 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;
}
}
}
答案 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
chrome控制台总是打印出从最后一行代码返回的内容。因此,如果这是一个赋值或函数调用而没有返回值,它将打印undefined
。所以不要担心,你的功能按预期工作。
有一种方法可以通过分配并返回要在函数中登录的值来传递它。 :)