不一致的JavaScript返回值

不一致的JavaScript返回值,javascript,null,undefined,return-value,Javascript,Null,Undefined,Return Value,如果ID不存在,为什么getElementById()返回null;如果类不存在,为什么getElementsByClassName()返回undefined?这在JavaScript语言中似乎是不一致的,因为两者都是DOM方法。例如: console.log( document.getElementById('bogusID') ); // null console.log( document.getElementsByClassName('bogusClass')[0] ); // unde

如果ID不存在,为什么getElementById()返回null;如果类不存在,为什么getElementsByClassName()返回undefined?这在JavaScript语言中似乎是不一致的,因为两者都是DOM方法。例如:

console.log( document.getElementById('bogusID') ); // null
console.log( document.getElementsByClassName('bogusClass')[0] ); // undefined
我最近不得不找出困难的办法,因为我错误地认为两种方法在失败时都会返回“未定义”,所以程序崩溃

不同的返回值实际上有什么原因吗

console.log( document.getElementById('bogusID') ); // null
这是因为DOM上没有bogusID项,因此返回值为空

console.log( document.getElementsByClassName('bogusClass')[0] ); // undefined
这是因为您获取的是一个数组的索引0,该数组在0指针处没有元素。因此数组的索引0未定义(未定义)

这是因为DOM上没有bogusID项,因此返回值为空

console.log( document.getElementsByClassName('bogusClass')[0] ); // undefined

这是因为您获取的是一个数组的索引0,该数组在0指针处没有元素。因此数组的索引0没有定义(未定义)

文档。getElementsByClassName('BoguClass')
返回一个空数组,您试图访问不存在的第0个元素,因此您得到了
未定义的

与其他编程语言不同,Javascript不会抛出索引超出范围异常,因为索引是作为属性实现的,访问不存在的属性会返回
未定义的

就检查和处理
null
undefined
而言,它们在javascript中都是
falsy
值,因此您的代码在这两种情况下应该是相同的

if(condition){
// Both undefined and null would not pass the condition.
}

document.getElementsByClassName('boguclass')
返回一个空数组,您试图访问不存在的第0个元素,因此您得到了
未定义的

与其他编程语言不同,Javascript不会抛出索引超出范围异常,因为索引是作为属性实现的,访问不存在的属性会返回
未定义的

就检查和处理
null
undefined
而言,它们在javascript中都是
falsy
值,因此您的代码在这两种情况下应该是相同的

if(condition){
// Both undefined and null would not pass the condition.
}

我不知道如何在内部为
getElementById()&getElementByClass
定义程序,但根据mozilla文档
getElementById()
基本上返回对元素的引用(对象)

ID 例如:
element=document.getElementById()
返回值

元素- 是对对象的引用,如果文档中没有指定ID的元素,则为null。在dom中,应该只有1个ID具有相同的名称,因此ID名称中没有重用

课程

例如:var elements=element.getElementsByClassName(名称)

getElementsByClassName()方法返回一个活动的,其中包含所有具有所有给定类名的子元素。在document对象上调用时,将搜索整个文档,包括根节点。 在dom中,只有1个ID具有相同的名称,因此ID名称中没有重用,并且使用数组收集使用classname引用的所有元素

未定义表示变量已声明但尚未赋值。另一方面,null是赋值。它可以作为无值的表示形式分配给变量


另外,undefined和null是两种不同的类型:undefined是一种类型本身(undefined),null是一个对象。

我不知道如何在内部为
getElementById()&getElementByClass
定义程序,但根据mozilla文档
getElementById()
基本上返回一个引用(对象)到元素

ID 例如:
element=document.getElementById()
返回值

元素- 是对对象的引用,如果文档中没有指定ID的元素,则为null。在dom中,应该只有1个ID具有相同的名称,因此ID名称中没有重用

课程

例如:var elements=element.getElementsByClassName(名称)

getElementsByClassName()方法返回一个活动的,其中包含所有具有所有给定类名的子元素。在document对象上调用时,将搜索整个文档,包括根节点。 在dom中,只有1个ID具有相同的名称,因此ID名称中没有重用,并且使用数组收集使用classname引用的所有元素

未定义表示变量已声明但尚未赋值。另一方面,null是赋值。它可以作为无值的表示形式分配给变量


另外,undefined和null是两种不同的类型:undefined是一种类型本身(undefined),null是一个对象。

“getElementsByClassName()如果类不存在则返回undefined”否,它不存在,在这种情况下它返回一个空集合。“getElementsByClassName()如果类不存在则返回undefined”否,它不存在,在这种情况下,它返回一个空集合。document.getElementById返回它找到的元素,如果找不到该元素,则返回null。在这里它找不到元素,因此返回null。document.getElementByClassName返回HTML集合,类似于具有该类的元素数组。如果没有这样的元素,它将返回一个空数组(在本例中为true),则空数组的第0个元素未定义。document.getElementById将返回它找到的元素,如果找不到该元素,则返回null。在这里它找不到元素,因此返回null。document.getElementByClassName返回一个H