Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查未定义的值时出现意外结果_Javascript - Fatal编程技术网

Javascript 检查未定义的值时出现意外结果

Javascript 检查未定义的值时出现意外结果,javascript,Javascript,我有一个长度最多为4且至少为1的对象数组。在这里,我检查哪些元素存在,并相应地执行操作 function sendToGroup(receiver_group) { if (receiver_group[0] !== undefined){ console.log(receiver_group[0]) } if(receiver_group[1] !== undefined){ console.log(receiver_group[1]) } if(rec

我有一个长度最多为4且至少为1的对象数组。在这里,我检查哪些元素存在,并相应地执行操作

function sendToGroup(receiver_group) {
  if (receiver_group[0] !== undefined){
    console.log(receiver_group[0])
  }

  if(receiver_group[1] !== undefined){
    console.log(receiver_group[1])
  }

  if(receiver_group[2] !== undefined){
    console.log(receiver_group[2])
  }

  if(receiver_group[3] !== undefined){
    console.log(receiver_group[3])
  }
}
当我给这个函数提供2个元素的数组时,我在控制台输出中看到了预期的第一个和第二个元素,但在

console.log(receiver_group[2])
这怎么可能呢?如果未定义(即未定义),则不应执行此日志代码

编辑:Chrome显示数组的长度为2。就是这样。 接收器组是一个数组。它的内容是

[{id:12, name:"name", age:"21"}, {id:22, name:"name", age:25}]

对于索引为3的项目4,同样的情况也不会发生。

如果我执行以下代码,它也会打印未定义的内容:

if(1==2){}
在控制台中,您可以键入变量的名称(例如try) 输入窗口)并打印相关信息。当你运行任何空 函数(如console.log)从控制台打印信息 关于返回值,在本例中未定义

因此,记录[0]和[1]后打印的未定义值是正确的行为,因为它试图打印未定义的返回值


请参考答案:

您能演示一下此代码是如何执行的吗?您确定打印
未定义的
后没有
控制台.log
?您如何知道它来自
console.log(receiver\u group[2])
?您必须发布更多代码。获得帮助的最佳方式是提供一个。可能是字符串
“undefined”
?一方面,
未定义!==undefined
始终为false,但另一方面,
“undefined”!=未定义的
为真。什么是
console.log(receiver\u group.length)返回?我的观点是它甚至不应该进入if语句的内部。因为我要说的是,如果输出不是在代码中未定义的,则记录输出。@AkilDemir这个答案的要点是,可能它根本没有输入该语句--
未定义的
可能由第二个日志触发--如果您直接在控制台中而不是从.js文件中运行此代码。作为实验,将
console.log(receiver_group[2])
替换为
console.log(“test”)
。是否打印了
“test”
?我正在运行.js文件中的代码,不仅记录,console.log下的代码也在运行。我的意思是尝试运行,但由于receiver_group[2]未定义,因此无法运行,并给出错误。