можно ли обратится к лексическому окружению функции напрямую
мне просто интересно можно так или нет, ведь пока есть 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'));