Зачем устанавливать переменную в null прямо перед возвратом из функции? - PullRequest
0 голосов
/ 10 апреля 2019

Читая книгу об электроне, я наткнулся на следующий код.

const windows = new Set();

app.on('ready', () => {
  createWindow();
});


const createWindow = exports.createWindow = () => {

  let newWindow = new BrowserWindow({
    show: false
  });

  newWindow.loadURL(url.format({
    pathname: path.join(__dirname, 'index.html'),
    protocol: 'file:',
    slashes: true
  }));

  newWindow.once('ready-to-show', () => {
    newWindow.show();
  });

  newWindow.on('closed', () => {
    windows.delete(newWindow);
    newWindow = null;
  });

  windows.add(newWindow);
  return newWindow;
};

Это то, что, как мне кажется, происходит, переменная newWindow является локальной для функции.closed event - последнее событие, которое должно произойти.Таким образом, когда closed event закончен, функция завершается.это означает, что переменная newWindow больше не существует.

Исходя из моего нынешнего понимания, я не вижу смысла устанавливать newWindow в ноль непосредственно перед завершением функции.

Есть лиесть причина для этого?

  newWindow.on('closed', () => {
    windows.delete(newWindow);
    newWindow = null;
  });

1 Ответ

4 голосов
/ 10 апреля 2019

Я не вижу смысла установки newWindow в null непосредственно перед завершением функции.

Этот код не устанавливает newWindow в null прямо перед завершением функции .Он устанавливает его, когда window закрывается (что будет когда-нибудь в будущем) и, следовательно, newWindow будет сохраняться в памяти до этого времени.

В обратном вызове .on используется переменная newWindow, которая объявлена ​​в более высоком объеме, тем самым настраивая закрытие вокруг нее. Это означает, что newWindow будет сохраняться после завершения функции, в которой она объявлена ​​(функция стрелки, назначенная для exports.createWindow).

Чтобы не допустить неопределенного сохранения переменной, присваиваниена null, чтобы гарантировать, что память освобождается, когда window, которая использовала ее, закрывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...