Javascript: неожиданный пустой элемент в массиве с ключами разных типов? - PullRequest
2 голосов
/ 31 января 2020

Может кто-нибудь объяснить, что происходит в этом JavaScript коде:

    let arr = [];

    arr["foo"] = "11";
    arr["sd"] = "12";
    arr[1] = "13";

    console.log(arr.length); //2
    console.log(arr) // [empty, "13", foo: "11", sd: "12"]

Почему в массиве есть элемент empty?

Кроме того, почему массив length равен 2, а не 4?

1 Ответ

6 голосов
/ 31 января 2020

Имена свойств, которые не нумеруются c, не учитываются при расчете длины массива в JavaScript. Устанавливая arr[1], вы устанавливаете длину равной 2, потому что длина всегда на единицу больше, чем максимальное число c имени свойства. Таким образом, ваш массив неявно имеет пустой элемент 0, элемент 1 со значением, а затем два других свойства со строковыми ключами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...