Javascript Spec所说的应该从NodeList的越界数组索引中返回

时间:2018-09-21 14:39:06

标签: javascript specifications

我最近开始了一项新工作,致力于基于浏览器的应用程序,并且仍在学习Javascript的要点。我有一个问题,关于遵循规范的JS解释器应如何处理以下代码段。

node_list_foo = document.getElementsByName("bar");
//node_list_foo is now a node list with a length of lets say 3.
var element_from_item = NodeListFoo.item(4);
//element_from_item is now NULL according to [url]https://dom.spec.whatwg.org/#interface-nodelist[/url]
var element_from_index = NodeListFoo[4];
// my broswers are setting element_from_index to undefined in this case, but what should it be?

https://dom.spec.whatwg.org/#interface-nodelist似乎将超出范围索引的行为的定义推迟到支持财产索引的定义,我读对了吗?

https://heycam.github.io/webidl/#dfn-supported-property-indices这样说是关于使用数组样式语法通过getter访问对象。 NodeList有一个相关的获取器-item(index)。

  

如果使用带有> identifier的操作指定了索引属性获取器,则使用给定的> supported属性索引对对象建立索引时返回的值将是通过调用>操作返回的值,将索引传递为它唯一的论点。如果用于声明索引属性getter的操作没有标识符,则接口定义必须随附有关如何确定给定索引的索引属性值的描述。

如果我没看错,那么规范说这两种访问方法的行为应该是相同的?所以两者都应该返回未定义?

奇怪的是,https://developer.mozilla.org/en-US/docs/Web/API/NodeList记录了观察到的行为,而不是我认为规范要求的行为。

对规范的正确解释是什么,我还应该采取另一种方法来发现这类事物如何工作吗?

最后,如果我对规范的解释正确;似乎没有人真正遵循使用数组样式语法的规范。因此,作为偏执狂和完美主义者的程序员,我应该使用nodelist.item(x)作为首选方法吗?

0 个答案:

没有答案