all-threads-bot

Frontender`s Spectre

JavaScript | Практика #162 | Доступ к свойствам объекта | ★★☆☆☆

28 марта 2023 г., 09:25

<p><b>Ответ: <code>TypeError</code></b></p> <p>В JavaScript у нас есть два способа доступа к свойствам объекта: нотация в скобках или нотация в точках. В этом примере мы используем точечную нотацию (<code>colorConfig.colors</code>) вместо скобочной нотации (<code>colorConfig["colors"]</code>).</p> <p>В точечной нотации JavaScript пытается найти свойство объекта с таким точным именем. В этом примере JavaScript пытается найти свойство с именем <code>colors</code> в объекте <code>colorConfig</code>. Не существует свойства с именем <code>colors</code>, поэтому возвращается <code>undefined</code>. Затем мы пытаемся получить доступ к значению первого элемента, используя <code>[1]</code>. Мы не можем сделать это для значения, которое <code>undefined</code>, поэтому оно выдает <code>TypeError</code>: <code>Cannot read свойство '1' of undefined</code>.</p> <p>JavaScript интерпретирует (или распаковывает) операторы. Когда мы используем скобочные обозначения, он видит первую открывающую скобку <code>[</code> и продолжает работать, пока не найдет закрывающую скобку <code>]</code>. Только тогда он оценит утверждение. Если бы мы использовали <code>colorConfig[colors [1]]</code>, он бы возвратил значение свойства <code>red</code> объекта <code>colorConfig</code>.</p>

<p><b>Ответ: <code>TypeError</code></b></p> <p>В JavaScript у нас есть два способа доступа к свойствам объекта: нотация в скобках или нотация в точках. В этом примере мы используем точечную нотацию (<code>colorConfig.colors</code>) вместо скобочной нотации (<code>colorConfig["colors"]</code>).</p> <p>В точечной нотации JavaScript пытается найти свойство объекта с таким точным именем. В этом примере JavaScript пытается найти свойство с именем <code>colors</code> в объекте <code>colorConfig</code>. Не существует свойства с именем <code>colors</code>, поэтому возвращается <code>undefined</code>. Затем мы пытаемся получить доступ к значению первого элемента, используя <code>[1]</code>. Мы не можем сделать это для значения, которое <code>undefined</code>, поэтому оно выдает <code>TypeError</code>: <code>Cannot read свойство '1' of undefined</code>.</p> <p>JavaScript интерпретирует (или распаковывает) операторы. Когда мы используем скобочные обозначения, он видит первую открывающую скобку <code>[</code> и продолжает работать, пока не найдет закрывающую скобку <code>]</code>. Только тогда он оценит утверждение. Если бы мы использовали <code>colorConfig[colors [1]]</code>, он бы возвратил значение свойства <code>red</code> объекта <code>colorConfig</code>.</p>
Ниже представлено пояснение.

Ответ: TypeError

В JavaScript у нас есть два способа доступа к свойствам объекта: нотация в скобках или нотация в точках. В этом примере мы используем точечную нотацию (colorConfig.colors) вместо скобочной нотации (colorConfig["colors"]).

В точечной нотации JavaScript пытается найти свойство объекта с таким точным именем. В этом примере JavaScript пытается найти свойство с именем colors в объекте colorConfig. Не существует свойства с именем colors, поэтому возвращается undefined. Затем мы пытаемся получить доступ к значению первого элемента, используя [1]. Мы не можем сделать это для значения, которое undefined, поэтому оно выдает TypeError: Cannot read свойство '1' of undefined.

JavaScript интерпретирует (или распаковывает) операторы. Когда мы используем скобочные обозначения, он видит первую открывающую скобку [ и продолжает работать, пока не найдет закрывающую скобку ]. Только тогда он оценит утверждение. Если бы мы использовали colorConfig[colors [1]], он бы возвратил значение свойства red объекта colorConfig.