【发布时间】:2011-06-15 19:26:46
【问题描述】:
有人能解释一下两者在概念上的区别吗?在某处读到第二个通过销毁对现有数组的所有引用来创建一个新数组,而 .length=0 只是清空数组。但在我的情况下它不起作用
//Declaration
var arr = new Array();
下面是一遍又一遍执行的循环代码。
$("#dummy").load("something.php",function(){
arr.length =0;// expected to empty the array
$("div").each(function(){
arr = arr + $(this).html();
});
});
但如果我用arr =[] 代替arr.length=0 替换代码,它就可以正常工作。谁能解释这里发生了什么。
【问题讨论】:
-
为什么你的代码循环
arr = arr + $(this).html();?如果要向数组中添加内容,则应改用Array.push()。 -
这很有趣,因为已经有 9 个赞成的答案,但仍然 不清楚 OP 的意图是什么......
-
@Bolt - 我只是在这里给出了代码示例,原始代码将元素动态添加到数组中。我选择将元素附加到数组而不是 push()。这对我正在寻找的东西有很大影响吗?
-
上面第二个代码块,是不是循环了?如果是这样,那么第一次执行它将清空数组,但是在第一次执行该代码块之后
arr将是对字符串的引用,因此从那时起arr.length将没有任何效果(因为length是 String 的只读属性)。arr = []将在每次迭代开始时将arr转换回一个空数组,但随后您会立即将其再次转换为字符串。所以你要么破坏了你的代码,试图为这个例子简化它,要么你只是在做一些非常奇怪的事情:P
标签: javascript arrays