我的javascript函数逻辑有什么问题?

我的javascript函数逻辑有什么问题?,javascript,arrays,function,if-statement,Javascript,Arrays,Function,If Statement,我的Javascript函数有问题,我不理解一些东西,只是想弄清楚一些 我有一个功能: function Test (array) { if (array === []) { return "the array is empty"; } else { return array; } 当我向这个函数传递一个空数组时,它返回空数组,完全跳过if语句的第一部分(这是我不理解的部分,为什么它会跳过这部分?我的理解是,它会在该点返回我的string语句,因为我传递

我的Javascript函数有问题,我不理解一些东西,只是想弄清楚一些

我有一个功能:

function Test (array) {
    if (array === []) {
        return "the array is empty";
    } else {
    return array;
}
当我向这个函数传递一个空数组时,它返回空数组,完全跳过if语句的第一部分(这是我不理解的部分,为什么它会跳过这部分?我的理解是,它会在该点返回我的string语句,因为我传递给它的数组实际上是空的。如果我删除else语句,它将返回“undefined”

注意!我知道这个问题的解决方案是设置我的“if”语句来比较我传递给它的数组的长度

例:


我还不明白为什么第一个不起作用,我真的很想解释一下。

在JavaScript中比较两个对象时,比较是问“这些对象是同一个对象吗?”,而不是“这些对象相同吗?”


您正在比较两个不同的空数组。

在JavaScript中比较两个对象时,比较是问“这些对象是同一个对象吗?”,而不是“这些对象相同吗?”


您正在比较两个不同的空数组。

if(array==[]){
永远不会为真。但是
if(array.length==0)
对于空数组将为真。您无法比较两个数组。这两个数组都有不同的地址。数组不是不可变的对象。它们只是引用。注意:您永远不会使用:
}关闭else
另请参见
if(array==[]){
永远不会为真。但是
if(array.length==0)
对于空数组将为真。您无法比较两个数组。两个数组都有不同的地址。数组不是不可变的对象。它们只是引用。注意:您永远不会使用:
关闭else。另请参见
function Test (array) {
    if (array.length === 0) {
        return "the array is empty";
    } else {
    return array;
}