Использование object.something
против object[something]
варьируется в зависимости от языка, и JavaScript особенно неэффективен в этом аспекте. Большая разница здесь в том, что в object[something]
, something
должна ссылаться на строку, соответствующую ключу в object
. Таким образом, если бы у вас было something = 'myKey'
, а myKey
было именем ключа в something
(то есть object = {'myKey': 'value', ...}
), вы бы получили value
. Если вы используете object.something
, вы просите JavaScript найти ключ в object
с именем что-то. Даже если вы пишете something = 'myKey'
, использование точки означает, что вы смотрите в рамках объекта, делая переменные в вашей программе эффективно невидимыми.
Поэтому, когда вы пишете student.x
, вы получаете неопределенное значение, потому что для вашей программы нет ключа 'x': 'value'
в student
. Определение x
в качестве ключа для l oop не меняет этого. С другой стороны, написание student[x]
означает, что ваша программа находит значение x
, ссылается и подключает его. Когда x
равно 'name'
, программа фактически ищет student['name']
.
Надеюсь, это прояснит вашу проблему. Удачи!