var obj = { "1": 0, 1: 9, 2: 3 }
console.log(obj["1"]); // 9
console.log(obj);
Почему вернулось значение свойства 1, а не "1"?
Куда пропало свойство 1?
Ответ
Потому что ключом в объекте всегда является строка (ну ладно, ещё symbol, но он тут не при чём). Получается, ты в литеральную запись объекта включаешь два одинаковых свойства (разрешено в ES3-, ES5 non strict, ES6+ в любом режиме) и последнее из свойств побеждает (перезаписывает более раннее значение).
Комментариев нет:
Отправить комментарий