我的JavaScript函数逻辑有什么问题?
问题描述:
我的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;
}
我只是还没有理解为什么第一个不能正常工作,并且会很感激的解释。
答
当您比较JavaScript中的两个对象时,比较是问“这些对象是否是同一对象?”,而不是“这些对象是否相同?”。
您正在比较两个不同的空阵列。
'if(array === []){'永远不会是真的。但是'if(array.length === 0)'对于一个空数组是真的。 –
你不能比较两个数组。两者都有不同的地址。数组不是不可变的对象。他们只是参考。 –
注意:您从不关闭else:'}' – R3tep