gpt4 book ai didi

javascript - 这是什么? "Hidden values"?

转载 作者:行者123 更新时间:2023-11-30 07:44:03 25 4
gpt4 key购买 nike

灵感来自 Lance Pollard's comment in this question , 发生了一些非常奇怪的事情,我以前从未见过......

var strangeArray = {
0:"a",
1:"b",
2:"c",
length: 0,
splice: Array.prototype.splice
}

现在,当你运行它时:

> strangeArray;
[] <-- you get an empty array.

> strangeArray.length;
0 <-- Holy $#!T

现在:

> strangeArray[0];
"a"

> strangeArray[1];
"b"

> strangeArray[2];
"c"

什么? “数组中的隐藏值”?

一开始我以为是因为它是一个对象,所以才这样。但是 object 应该像这样显示:

{}

那么为什么会这样呢?请帮忙,我完全糊涂了。谢谢。

最佳答案

这只是控制台通常将对象解释为数组的方式(即使它根本不是数组,就像在您的代码中一样)。

当控制台看到一个对象...

  • 一个数字.length属性
  • 函数 .splice 属性

...控制台决定将其显示为数组,即使它不是。它对对象实际是什么没有影响。

strangeArray.length; // 0

这应该不足为奇。您在对象上定义了它。

他们使用这种方法的原因大概是因为它速度快,而且足够准确。

再次重申,仅仅因为您看到了 [],并不意味着它是一个数组。控制台不是语言的一部分。它只是负责显示一些有用的信息。

关于javascript - 这是什么? "Hidden values"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10763196/

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