可以解释一下两者之间的概念差异吗?读取某处,第二个通过销毁对现有数组的所有引用来创建一个新数组,而.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它,则可以正常工作。谁能解释这里发生的事情。 问题来源于stack overflow
你前面 var arr = new Array(); 后面 arr = arr + $(this).html() 你自己看看你写的, 数组用来当字符串用?
foo = []创建一个新数组,并将对它的引用分配给一个变量。其他任何引用均不受影响,但仍指向原始数组。
foo.length = 0修改数组本身。如果通过其他变量访问它,则仍会获得修改后的数组。
阅读第二篇文章,销毁对现有数组的所有引用,从而创建一个新数组
那是倒退。它创建一个新数组,并且不破坏其他引用。
var foo = [1,2,3]; var bar = [1,2,3]; var foo2 = foo; var bar2 = bar; foo = []; bar.length = 0; console.log(foo, bar, foo2, bar2); 给出:
[] [] [1, 2, 3] [] arr.length =0;// expected to empty the array 并且至少在第一次时确实清空了数组。第一次执行此操作后:
arr = arr + $(this).html(); …用字符串覆盖数组。
length字符串的属性是只读的,因此分配0给它无效。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。