gpt4 book ai didi

javascript - 通过仅添加元素而不推送 javascript 来更改数组大小

转载 作者:数据小太阳 更新时间:2023-10-29 04:58:02 25 4
gpt4 key购买 nike

我知道更改数组大小的通用方法是使用 .push()

然而,今天我在angularJS中看到了一段代码,它做了这样的事情:

var service = {
pages: [],
doSmth: doSmth
};

doSmth();

function doSmth() {
service.pages[1] = "abc";
service.pages[5] = "def";
}

我在浏览器上运行调试器,发现在 doSmth() 被调用之前,pages[1] 是未定义的,但是在那之后,pages[ 1]被赋值,没有任何错误。

这怎么可能?

最佳答案

这正是 JavaScript 的神奇之处。如果您来自 Java 或 C 等语言,这可能看起来很奇怪,但您可以随时设置数组中任何索引的值,并且数组将扩展到该大小!

考虑:

var t = [];
t.length === 0;
t[10000] = 'value';
t.length === 10001;

JavaScript 只是在幕后处理这个问题。值得一提的是,这种行为并不是 JavaScript 特有的。这在其他解释语言中也有所体现。例如,Ruby 允许您执行相同的操作。

此外,在 JavaScript 中,length 是数组的可写属性,因此您可以轻松 chop 或清除整个数组:

var t = [1];
t[4] = 0;
t === [1, undefined, undefined, undefined, 0];
t.length = 2;
t === [1, undefined];
t.length = 0;
t === [];

将长度设置为 0 是清除数组最快、最简单的方法之一。它可能不是最直观的解决方案,但它是我的首选。

关于javascript - 通过仅添加元素而不推送 javascript 来更改数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33903514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com