странное строковое значение в javascript - PullRequest
0 голосов
/ 20 апреля 2020

Я работаю над Angular, и я только что встретил эту странную вещь, может быть, кто-то может объяснить мне эту темную магию c вещь:

  console.log('coordinates', coordinates[30])
  console.log('typeof x', typeof coordinates[30].x)
  console.log('typeof y', typeof coordinates[30].y)
  console.log('y', coordinates[30].y)
  console.log('y.value', coordinates[30].y.value)

и результат в консоли chrome

coordinates {x: "13.69", y: "0"}
                  x: "13.69"
                  y: {value: "6.16"}
                  __proto__: Object
typeof x string
typeof y string
y 0
y.value undefined

снимок экрана результатов в chrome снимок экрана результатов в firefox

массив координат, полученный в результате импорта D3 json и значение 6.16, похоже, взято из предыдущей записи массива, я не понимаю как.

Редактировать: я не понимаю, почему typeof возвращает строку, а не Object?

Спасибо

1 Ответ

0 голосов
/ 20 апреля 2020

Во время вашего журнала консоли значение y равно "0". Следовательно, вызов typeof возвращает «строку». Когда вы позже развернете объект координат в консоли, он получит его текущее значение. В этот момент значение y равно {value: "6.16"}. Если вы зарегистрируете typeof y в этот момент, он вернет «объект». Вот живая демонстрация: https://jsfiddle.net/michaschwab/gaqbtovk/

const coordinates = {y: "0"};
console.log(coordinates); // shows the updated value on expand, {value: "6.16"}
console.log(typeof coordinates.y); // string

coordinates.y = {value: "6.16"};
console.log(typeof coordinates.y); // object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...