Вдохновленный 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
должен показать, как это:
{}
Так почему же это происходит? Пожалуйста, помогите, я совершенно смущен. Благодарю.
«' [] 'не означает, что это массив» В отличие от того, что я знал годами ... –
@Derek: '[]' это не то, что вы ввели в свой JS-код, который должен интерпретироваться JS-движком , В вашем случае '[]' - это просто текст, отображаемый в консоли. Опять же, консоль не является частью языка. Консоль разработчика может отображать все, что захочет, и это не нарушит никаких правил ... потому что их нет. –
... позвольте мне сказать так. Если какой-то разработчик консольных консолей решил отобразить '[]' каждый раз, когда он получил номер '42', это сделает номер' 42' Array? Конечно нет. Это все еще номер, но консоль решила отобразить его, как если бы это был массив, независимо от того, что это на самом деле. –