gpt4 book ai didi

javascript - 是否可以在 JavaScript 函数内从调用者的作用域访问变量?

转载 作者:行者123 更新时间:2023-11-28 17:35:47 25 4
gpt4 key购买 nike

这个问题之前已经被问过,但所有热门问题都有 5 年以上的历史了,我很想知道自那时以来是否有任何变化。如果你有一个定义在某处的函数

const accessParentScope = () => parentVariable;

那么有什么方法可以从调用函数的范围访问 parentVariable 吗?最终目标是做类似的事情

function createAnotherScope() {
const parentVariable = 'some value';
return accessParentScope();
}

并且让 accessParentScope() 可以访问 parentVariable 无需将其作为参数显式传递。

或者,是否可以从闭包范围访问变量?如果你有一个像

这样的函数
function createClosure() {
const parentVariable = 'some value';
return closure = () => null;
}

那么你能做一些类似createClosure().parentVariable的事情吗?这里的语法显然行不通,但我很好奇是否有可能实现这样的远程操作。

最佳答案

Is it possible to access a variable from the caller's scope inside a function in JavaScript?

没有。那将是 dynamic scope 。大多数语言(包括 JavaScript)都实现 lexical scope 。这不会改变。

this,但它是一个显式传递的参数。 this 的值(在大多数情况下)是在调用函数时确定的,而不是定义函数的时间或地点(箭头函数对待 this但不同)。

function logName() {
console.log(this.name);
}

function sayFoo() {
logName.call({name: 'foo'});
}
sayFoo();

function sayBar() {
logName.call({name: 'bar'});
}
sayBar();

正如您所看到的,与使用参数定义函数相比,这确实没有任何优势:

function logName(name) {
console.log(name);
}

function sayFoo() {
logName('foo');
}
sayFoo();

function sayBar() {
logName('bar');
}
sayBar();

正如 @JaromandaX 在他们的评论中所说,这就是参数的含义,在调用时向函数提供值。

关于javascript - 是否可以在 JavaScript 函数内从调用者的作用域访问变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49164105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com