<p><b>Ответ: <code>TypeError</code></b></p>
<p>Вопрос, конечно, с подвохом, но не спешите оценить его, как легкий. Те, кто понимают работы <code>WeakMap</code> сразу бы "купились" на "уничтожение" ссылки на объект. Забегая наперед, надо отметить, что <strong>сборка мусора запускается не сразу</strong>.</p>
<p><code>WeakMap</code> является типом коллекции в JavaScript, который представляет собой таблицу ассоциативных связей, где ключами
могут быть только объекты. <code>WeakMap</code> обладает следующими особенностями:</p>
<ol>
<li>
<p>Объекты, используемые в качестве ключей, не участвуют в подсчете ссылок, поэтому они могут быть автоматически
удалены из <code>WeakMap</code> сборщиком мусора, если на них нет других ссылок.</p>
</li>
<li>
<p><code>WeakMap</code> не имеет свойства <code>size</code> и методов <code>clear()</code>, <code>keys()</code>,
<code>values()</code> и <code>entries()</code>, которые присутствуют у Map.</p>
</li>
<li>
<p><code>WeakMap</code> не может использоваться для итерации, поскольку не гарантирует порядок элементов.</p>
</li>
<li>
<p><code>WeakMap</code> может использоваться для создания приватных переменных в классе, так как ключи <code>WeakMap</code> могут быть
доступны только из экземпляра, а не из внешнего кода.</p>
</li>
<li>
<p><code>WeakMap</code> может использоваться для хранения дополнительных данных, связанных с объектом, которые должны быть
удалены, когда объект удаляется из памяти.</p>
</li>
</ol>
<p>В данном коде создается новый экземпляр <code>WeakMap</code>, который позволяет хранить ассоциативные связи между
объектами.</p>
<p>Затем создается новый объект <code>{}</code>, который не имеет связей с другими объектами. Этот объект добавляется в
<code>WeakMap</code> в качестве ключа и связывается со значением <code>'value'</code>.</p>
<p>Далее вызывается метод <code>get()</code> у <code>WeakMap</code>, передавая в качестве аргумента объект
<code>{}</code>. Так как этот объект является тем же самым объектом, что был добавлен в <code>WeakMap</code>, метод
<code>get()</code> возвращает строку <code>'value'</code>.</p>
<p>Однако, после этого строки <code>obj = null</code> пытается присвоить <code>null</code> константе <code>obj</code>,
которая уже не может быть изменена, так как объявлена с использованием ключевого слова <code>const</code>. Это
приводит к ошибке выполнения (TypeError), так как нельзя изменять значения, присвоенные константам в JavaScript.</p>
<p><b>Ответ: <code>TypeError</code></b></p>
<p>Вопрос, конечно, с подвохом, но не спешите оценить его, как легкий. Те, кто понимают работы <code>WeakMap</code> сразу бы "купились" на "уничтожение" ссылки на объект. Забегая наперед, надо отметить, что <strong>сборка мусора запускается не сразу</strong>.</p>
<p><code>WeakMap</code> является типом коллекции в JavaScript, который представляет собой таблицу ассоциативных связей, где ключами
могут быть только объекты. <code>WeakMap</code> обладает следующими особенностями:</p>
<ol>
<li>
<p>Объекты, используемые в качестве ключей, не участвуют в подсчете ссылок, поэтому они могут быть автоматически
удалены из <code>WeakMap</code> сборщиком мусора, если на них нет других ссылок.</p>
</li>
<li>
<p><code>WeakMap</code> не имеет свойства <code>size</code> и методов <code>clear()</code>, <code>keys()</code>,
<code>values()</code> и <code>entries()</code>, которые присутствуют у Map.</p>
</li>
<li>
<p><code>WeakMap</code> не может использоваться для итерации, поскольку не гарантирует порядок элементов.</p>
</li>
<li>
<p><code>WeakMap</code> может использоваться для создания приватных переменных в классе, так как ключи <code>WeakMap</code> могут быть
доступны только из экземпляра, а не из внешнего кода.</p>
</li>
<li>
<p><code>WeakMap</code> может использоваться для хранения дополнительных данных, связанных с объектом, которые должны быть
удалены, когда объект удаляется из памяти.</p>
</li>
</ol>
<p>В данном коде создается новый экземпляр <code>WeakMap</code>, который позволяет хранить ассоциативные связи между
объектами.</p>
<p>Затем создается новый объект <code>{}</code>, который не имеет связей с другими объектами. Этот объект добавляется в
<code>WeakMap</code> в качестве ключа и связывается со значением <code>'value'</code>.</p>
<p>Далее вызывается метод <code>get()</code> у <code>WeakMap</code>, передавая в качестве аргумента объект
<code>{}</code>. Так как этот объект является тем же самым объектом, что был добавлен в <code>WeakMap</code>, метод
<code>get()</code> возвращает строку <code>'value'</code>.</p>
<p>Однако, после этого строки <code>obj = null</code> пытается присвоить <code>null</code> константе <code>obj</code>,
которая уже не может быть изменена, так как объявлена с использованием ключевого слова <code>const</code>. Это
приводит к ошибке выполнения (TypeError), так как нельзя изменять значения, присвоенные константам в JavaScript.</p>
Ниже представлено пояснение.
Ответ: TypeError
Вопрос, конечно, с подвохом, но не спешите оценить его, как легкий. Те, кто понимают работы WeakMap
сразу бы "купились" на "уничтожение" ссылки на объект. Забегая наперед, надо отметить, что сборка мусора запускается не сразу.
WeakMap
является типом коллекции в JavaScript, который представляет собой таблицу ассоциативных связей, где ключами
могут быть только объекты. WeakMap
обладает следующими особенностями:
-
Объекты, используемые в качестве ключей, не участвуют в подсчете ссылок, поэтому они могут быть автоматически
удалены из WeakMap
сборщиком мусора, если на них нет других ссылок.
-
WeakMap
не имеет свойства size
и методов clear()
, keys()
,
values()
и entries()
, которые присутствуют у Map.
-
WeakMap
не может использоваться для итерации, поскольку не гарантирует порядок элементов.
-
WeakMap
может использоваться для создания приватных переменных в классе, так как ключи WeakMap
могут быть
доступны только из экземпляра, а не из внешнего кода.
-
WeakMap
может использоваться для хранения дополнительных данных, связанных с объектом, которые должны быть
удалены, когда объект удаляется из памяти.
В данном коде создается новый экземпляр WeakMap
, который позволяет хранить ассоциативные связи между
объектами.
Затем создается новый объект {}
, который не имеет связей с другими объектами. Этот объект добавляется в
WeakMap
в качестве ключа и связывается со значением 'value'
.
Далее вызывается метод get()
у WeakMap
, передавая в качестве аргумента объект
{}
. Так как этот объект является тем же самым объектом, что был добавлен в WeakMap
, метод
get()
возвращает строку 'value'
.
Однако, после этого строки obj = null
пытается присвоить null
константе obj
,
которая уже не может быть изменена, так как объявлена с использованием ключевого слова const
. Это
приводит к ошибке выполнения (TypeError), так как нельзя изменять значения, присвоенные константам в JavaScript.