访问“父范围”

Accessing "Parent Scope"

本文关键字:父范围 范围 访问      更新时间:2023-09-26

免责声明: 我不确定我是否使用了正确的术语。

给定此代码:

var sample = 'Text';
var test = function(sample) {
    console.log(sample);
};
test('Text Too');

我知道如果函数参数具有不同的名称,则console.log()调用将输出"文本"。有没有办法让test()函数引用"父范围"变量,sample而不更改函数参数的名称?如果是这样,如何?

不,在 JavaScript 中没有办法做到这一点。如果在内部作用域中使用相同的变量名称,则该内部作用域将完全无法访问外部作用域变量。

编辑:当然,外部作用域是全局作用域时除外。然后你可以使用 window.sample .

@plbsam是对的,他不应该删除他的答案。

在您的特定情况下,函数内部的this是调用它的上下文:文档

var sample = 'Global var';
var test = function(sample) {
  console.log("sample: "+sample);
  console.log("this.sample: "+this.sample);
};
test('Local var');
<小时 />

编辑:

由于这一切都取决于调用函数的作用域,因此您始终可以将this分配给全局作用域中的单独 var,以便能够在任何地方访问它:

// this var can now be accessed inside any function as a reference to the global scope.
global = this;
var sample = 'Global';
var test = function(abc) {
  console.log("sample: "+sample);
  console.log("this.sample: "+this.sample);
  console.log("global.sample: "+global.sample);
};
test('Local');