免责声明: 我不确定我是否使用了正确的术语。
鉴于此代码:
var sample = 'Text';
var test = function(sample) {
console.log(sample);
};
test('Text Too');
我知道如果函数参数具有不同的名称,console.log()
调用将输出“Text”。有没有办法让test()
函数引用“父范围”变量sample
而不更改函数参数的名称?如果是这样,怎么样?
答案 0 :(得分:2)
不,没有办法在JavaScript中执行此操作。如果在内部作用域中使用相同的变量名,则外部作用域变量将完全无法访问该内部作用域。
编辑:当然,除了外部范围是全局范围。然后你可以使用window.sample
。
答案 1 :(得分:2)
@plbsam是对的,他不应该删除他的答案。
在您的特定情况下,函数内的this
是调用它的上下文:docs
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');