можно ли обратится к лексическому окружению функции напрямую

мне просто интересно можно так или нет, ведь пока есть x, то d тоже есть в окружении, или из х обязательно надо ссылаться на d, чтобы оно жило?

то есть не вот так

let a = () => {
  let d = 5
  return () => d
}
let x = a()
console.log(x())

а как то так

let a = () => {
  let d = 5
  return () => {}
}
let x = a()
console.log(x().`any Obj.d` или x.`anyObj.d`);

Ответы (1 шт):

Автор решения: Grundy

К лексическому окружению напрямую обратиться нельзя.


Однако, можно воспользоваться тем, что прямой вызов eval выполняется в локальной области видимости.

let a = () => {
  let d = 5;
  let d2 = 11;
  return (prop) => {
    return eval(prop);
  }
}
let x = a();
console.log(x('d'), x('d2'));

→ Ссылка