Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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_Jquery_For Loop - Fatal编程技术网

循环中…的JavaScript产生了奇怪的结果

循环中…的JavaScript产生了奇怪的结果,javascript,jquery,for-loop,Javascript,Jquery,For Loop,我的目标如下: var r = { obj: $(this), children: $(this).children(), panes: $('.rotatorPane', $(this)), tagNames : [], captions: [], subcaptions: [] }; $(此)指以下部门: <div class="myRotator"> <div class="rotatorPane">

我的目标如下:

var r = {
    obj: $(this),
    children: $(this).children(),
    panes: $('.rotatorPane', $(this)),
    tagNames : [],
    captions: [],
    subcaptions: []     
};
$(此)
指以下部门:

<div class="myRotator">
    <div class="rotatorPane">

    </div>
    <div class="rotatorPane" id="pane3">

    </div>

    <img src="img/1.jpg" alt="pane 1" class="rotatorPane" data-caption="Lorem Ipsum" data-subcaption="Dolor sit amet" />

</div>
输出按预期开始:

0
1
2
但是我得到了一堆方法名作为输出:

length
prevObject
context
selector
constructor
init
jquery
size
toArray
get
...etc

有人知道为什么会发生这种情况吗?

不要将
用于。。。在
中对数组或类似数组的对象执行操作。使用数字索引变量

for (var i = 0; i < r.panes.length; ++i) {
  var pane = r.panes[i];
  // ...
}
for(变量i=0;i
用于。。。在中,表单用于迭代对象的属性-所有属性。当您要迭代数组的索引属性(或者,再次,您将其视为数组的内容)时,请始终使用数字索引


在本例中,所讨论的类似数组的对象是一个jQuery对象,除了数字索引属性之外,它还具有各种属性。

不要将
用于。。。在
中对数组或类似数组的对象执行操作。使用数字索引变量

for (var i = 0; i < r.panes.length; ++i) {
  var pane = r.panes[i];
  // ...
}
for(变量i=0;i
用于。。。在中,表单用于迭代对象的属性-所有属性。当您要迭代数组的索引属性(或者,再次,您将其视为数组的内容)时,请始终使用数字索引


在本例中,所讨论的类似数组的对象是一个jQuery对象,除了数字索引属性之外,它还具有各种属性。

我认为每个循环都应该使用jQuery,由于jquery将自己的方法和内容添加到对象中,您可能无法使用hasOwnProperty,因此我认为您应该为每个循环使用jquery,因为jquery将自己的方法和内容添加到对象中,因此您可能无法使用hasOwnProperty,因为只有在检索对象的所有键时才能使用in。对于那些原型没有被修改的简单数组,这一点大部分都是有效的,除了迭代的顺序不能保证(特别是如果你把项目插入到数组的中间),你就不应该真正使用它。嗯,是的,但是我个人尽量回避那些“主要工作”的编码实践。当有一个简单的选择总是有效的时候。另外,对于某些代码,您永远不知道它的环境何时会发生变化,从而使数组原型获得一些额外的iterable属性。是的,有一个
hasOwnProperty()
测试,但是如果你不得不这么麻烦的话,这似乎没有什么意义。如果你读了我的评论,你会发现我的观点是,即使有一种方法是有效的,你仍然不应该使用它。哦,好吧,我明白你的意思了。我不是想批评你的陈述(这是完全正确的),而是想阻止任何人认为,
是为了。。。in
只是一个“顽皮”而不是一个很坏的主意:-)
for in
应该只在检索对象的所有键时使用。对于那些原型没有被修改的简单数组,这一点大部分都是有效的,除了迭代的顺序不能保证(特别是如果你把项目插入到数组的中间),你就不应该真正使用它。嗯,是的,但是我个人尽量回避那些“主要工作”的编码实践。当有一个简单的选择总是有效的时候。另外,对于某些代码,您永远不知道它的环境何时会发生变化,从而使数组原型获得一些额外的iterable属性。是的,有一个
hasOwnProperty()
测试,但是如果你不得不这么麻烦的话,这似乎没有什么意义。如果你读了我的评论,你会发现我的观点是,即使有一种方法是有效的,你仍然不应该使用它。哦,好吧,我明白你的意思了。我不是想批评你的陈述(这是完全正确的),而是想阻止任何人认为,
是为了。。。in
只是一个“顽皮”而不是一个真正的坏主意:-)