访问与实例变量同名的全局变量

5
var myVar = 5;

var example = function() {
   var myVar = 10;

   // How can I access the global variable 10?
};

如果有一个与本地变量同名的全局变量,我该如何访问全局变量?

我没有使用es6。

我在jsdb中运行它,而不是在浏览器或节点中,因此我无法访问对象'Window'或'global'。


如果没有全局对象,我认为这是不可能的。最好还是使用不同的变量名称。 - CertainPerformance
你是在哪里调用 example() 函数的?你能修改那段代码吗? - Phil
1个回答

2
假设您可以修改调用example()函数的代码,您应该能够使用Function.prototype.call()传递当前作用域,并使用this访问它。例如:

'use strict'

var myVar = 5;

var example = function() {
   var myVar = 10;
   
   console.info('Local:', myVar)
   console.info('Outer:', this.myVar)
};

example.call({ myVar })


谢谢...我想我对于为什么'this'访问全局作用域而不是局部作用域感到困惑,尤其是在示例函数内部。你能为我解释得更详细一些吗? - user7255069
1
它并不是。函数中的this访问函数的上下文。Function.prototype.call的好处在于可以提供这个上下文。例如,如果你使用.call({a: 1}),那么this.a将会是1 - Phil
这个答案使用了ES6,但是OP说他没有使用ES6。只需将{ myVar }更改为{ myVar: myVar }即可。 - PHP Guru
@PHPGuru,但是楼主已经接受了答案。 - Phil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接