【发布时间】:2013-11-19 08:35:42
【问题描述】:
我是 JS 新手,正在阅读 JS 数据类型,这些数据类型将我指向这些页面上的 Live NodeLists 和 Static NodeLists:Why is getElementsByTagName() faster than querySelectorAll()? 和 HTMLCollections & NodeLists 提到的页面描述他们的差异使用非常相似的例子:
实时节点列表:
var divs = document.getElementsByTagName("div"),
i=0;
while(i < divs.length){
document.body.appendChild(document.createElement("div"));
i++;
}
静态节点列表:
var divs = document.querySelectorAll("div"),
i=0;
while(i < divs.length){
document.body.appendChild(document.createElement("div"));
i++;
}
我对这段特殊的代码很感兴趣:
var divs = document.getElementsByTagName("div"),
i=0;
分别。这个:
var divs = document.querySelectorAll("div"),
i=0;
有人可以澄清一下这个建筑在做什么吗?或者问题应该是:这之后变量divs的内容和类型是什么?我假设这是数组,所以我尝试了这个简约的 JS,在这里我添加了更多变量:
var divs = document.getElementsByTagName("div"),
j=5,
i=0;
alert(divs.length);
但不知道我添加了多少其他变量到 divs 以及 document.getElementsByTagName alert() 的结果始终为 1。然后我尝试通过 typeof() 打印它并返回我这是对象.这是怎么回事,是一些特殊的 JS 语法糖还是什么?
【问题讨论】:
-
Comma operator(,) Where it can “really” be useful。看来你不知道逗号运算符。
-
您在代码示例之前将问题的答案输入为粗体标题 :) 它们是 NodeList 对象,无论是实时的还是静态的。'
-
@Sirko 在
var语句中很好,逗号不是真的表达式语法中的“逗号运算符”。可能会分头发。 -
不要使用警报...使用
console.log(variable) -
@Mathletics 不使用
alert进行调试的主要原因是它会暂停代码执行,这可能会在使用异步函数时搞砸事情的顺序。还有一些事件处理程序会在您关闭警报时再次触发,从而导致潜在的循环,您在尝试摆脱当前警报时只会不断收到新警报。
标签: javascript sql data-structures types syntactic-sugar