Как я могу предотвратить запуск функции Node IIFE через инъекцию? - PullRequest
0 голосов
/ 12 марта 2019

Мой сценарий заключается в том, что я изучаю внедрение кода, поэтому var / let специально отключен в функции IIFE.

Каков наилучший способ предотвратить запуск IIFE? Если я попробую этот код в моем узле REPL, переменная головки молотка окажется в глобальной области видимости. Я пытаюсь выяснить, как я могу предотвратить внедрение кода, как это. Есть ли способ преобразовать все аргументы в строку перед запуском IFFE?

function keepItLocal(input) {
  console.log(input);
  return input;
}
keepItLocal('test', (function IIFE() {
  hammerhead = 'on the global scope';
  console.log(hammerhead);
  return 1
}()));

узел REPL> головка молотка

отпечатков

«в глобальном масштабе»

Я думал, что, возможно, я смогу превратить Аргументы в строку, но, похоже, JavaScript сначала оценивает IIFE.

function keepItLocal(input) {
  arguments = Array(...arguments.toString());
  console.log(arguments);
  console.log(input);
  return input;
}
keepItLocal('test', (function IIFE() {
  hammerhead = 'on the global scope';
  console.log(hammerhead);
  return 1
}()));
...