Как узнать, выпущена ли ссылка в JavaScript

Я приведу пример не уверен, что это то, что вам нужно.

var completionHandler: (value: Float) -> ();

func printFloat(value: Float) {
    println(value)
}

completionHandler = printFloat

completionHandler(value: 5)

Он просто печатает 5, используя объявленную переменную completionHandler.

2
задан 4m1r 20 March 2019 в 15:14
поделиться

2 ответа

Когда мы вызываем new для функции конструктора, она всегда возвращает новый объект, что означает, что когда client был мутирован позже, теперь он определенно содержит новое значение. Это одна вещь.

Другое дело, что сборщик мусора среды выполнения javascript ищет объекты, которые находятся в памяти, но не ссылаются ни на одну из переменных, и, если они найдены, удаляет их.

Так, в основном, когда я делаю это,

let obj = {name: 'Hello'}

obj ссылается на некоторый объект с 2ABCS адресом памяти, и когда я изменяю его

let obj = {name: 'World'}

Теперь он ссылается на объект с адресом 1ABCS, который делает 2ABCS сиротой, что означает, что он будет удален сборщиком мусора

Подробнее читайте https://javascript.info/garbage-collection

0
ответ дан Umair Abid 20 March 2019 в 15:14
поделиться

В Javascript GC не представляет большой проблемы для потенциального злоупотребления информацией, доступной в объектах. Это сами объекты. С современными инструментами разработчика можно легко войти в любую часть кода переднего плана и понять его, если он не запутан. ИМО, в наши дни обфускация в значительной степени необходима. Во-первых, это уменьшает размер файла, а во-вторых, это затрудняет использование кода в производстве.

Теперь перейдем к актуальному вопросу. Как только новый экземпляр new Auth назначен на client, на старый экземпляр больше нет жестких ссылок со стороны client, поэтому он имеет право на сборку мусора, если другие ссылки не хранятся. Нет гарантии, насколько быстро будет восстановлена ​​память.

И преимущество использования let заключается в его объеме. Это ограничено его блоком. Тем не менее, нередко иметь огромные блоки. По сравнению с глобальными переменными let предлагает вам небольшую область действия и, следовательно, может быть выпущен вскоре после окончания блока. Может также случиться, что среда выполнения Javascript может использовать стек методов для переменных let, и как только блок заканчивается (метод), он удаляет стек и, следовательно, ссылки также удаляются.

Наконец, абсолютно нормально, что так оно и есть, и ваша реализация не дает никаких преимуществ по сравнению с предыдущей.

0
ответ дан Abhijith Nagarajan 20 March 2019 в 15:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: