В CDP, когда, например, выполняется Debugger.evaluateOnCallFrame для оценки какого-либо объекта, ответ будет содержать свойство objectId, которое выглядит как {injectedScriptId: 1, id: 413}. А injectedScriptId никогда не меняется (по крайней мере, я никогда не замечал, чтобы он менялся). Подсказка id кажется уникальным идентификатором объекта в памяти.
Связанный (даже более важный, но просто ищущий подтверждения) вопрос: является ли id в objectId уникальным идентификатором объекта во всей программе/процессе? Могу ли я положиться на него, чтобы построить сериализованное строковое представление переменных без циклических ссылок?
Итак, какова цель injectedScriptId и что такое InjectedScript?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


This is an internal implementation detail so you shouldn’t rely on it and it may change at any time without warning, or not behave consistently.
Injected script is the internal thing that we inject into a JavaScript execution context to manage remote objects and other things. That’s why they have separate id counters.
So no, the internal id is not unique. Use the string.