开发者社区> 问答> 正文

Array.length = 0和Array = []之间的区别?

可以解释一下两者之间的概念差异吗?读取某处,第二个通过销毁对现有数组的所有引用来创建一个新数组,而.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

展开
收起
保持可爱mmm 2020-02-09 11:38:37 781 0
2 条回答
写回答
取消 提交回答
  • 你前面 var arr = new Array(); 后面 arr = arr + $(this).html() 你自己看看你写的, 数组用来当字符串用?

    2020-02-09 22:28:24
    赞同 展开评论 打赏
  • 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给它无效。

    2020-02-10 16:05:06
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载