簡體   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