PTN*_*PTN 6 javascript angularjs
我知道改变数组大小的通用方法是使用.push().
但是,今天我在angularJS中看到了一段代码:
var service = {
pages: [],
doSmth: doSmth
};
doSmth();
function doSmth() {
service.pages[1] = "abc";
service.pages[5] = "def";
}
Run Code Online (Sandbox Code Playgroud)
我在浏览器上运行调试器,发现在doSmth()调用之前,pages[1]未定义,但在此之后,pages[1]分配值没有任何错误.
这怎么可能?
Bre*_*nan 14
这只是JavaScript允许的魔力.如果你来自Java或C这样的语言,这可能看起来像一个奇怪的想法,但你可以随时设置数组中任何索引的值,并且数组将扩展到那个大小!
考虑:
var t = [];
t.length === 0;
t[10000] = 'value';
t.length === 10001;
Run Code Online (Sandbox Code Playgroud)
JavaScript只是在幕后处理这个问题.值得一提的是,这种行为并非特定于JavaScript.在其他解释语言中也可以看到这一点.例如,Ruby允许您执行相同的操作.
另外在JavaScript中,length是数组的可写属性,因此您可以轻松截断或清除整个数组:
var t = [1];
t[4] = 0;
t === [1, undefined, undefined, undefined, 0];
t.length = 2;
t === [1, undefined];
t.length = 0;
t === [];
Run Code Online (Sandbox Code Playgroud)
将长度设置为0是清除阵列的最快速和最简单的方法之一.它可能不是最直观的解决方案,但它是我的首选.
| 归档时间: |
|
| 查看次数: |
7941 次 |
| 最近记录: |