2016-11-28 51 views
0

我的Javascript函數有問題,我不理解某些內容,只是尋求一些清晰度。我的JavaScript函數邏輯有什麼問題?

我有一個函數:

function Test (array) { 
    if (array === []) { 
     return "the array is empty"; 
    } else { 
    return array; 
} 

當我把這個函數傳遞一個空數組,它返回空數組,完全跳過我的if語句的第一部分(這是我不理解的部分,爲什麼它跳過那部分?我的理解是,它會返回我的字符串語句,因爲我傳遞它的數組實際上是空的。如果刪除else語句,它將返回「undefined」。注意:我知道解決這個問題的方法是設置我的「if」語句來比較我傳遞的數組長度。

例如:

function Test (array) { 
    if (array.length === 0) { 
     return "the array is empty"; 
    } else { 
    return array; 
} 

我只是還沒有理解爲什麼第一個不能正常工作,並且會很感激的解釋。

+0

'if(array === []){'永遠不會是真的。但是'if(array.length === 0)'對於一個空數組是真的。 –

+0

你不能比較兩個數組。兩者都有不同的地址。數組不是不可變的對象。他們只是參考。 –

+1

注意:您從不關閉else:'}' – R3tep

回答

3

當您比較JavaScript中的兩個對象時,比較是問「這些對象是否是同一對象?」,而不是「這些對象是否相同?」。

您正在比較兩個不同的空陣列。