如何在JavaScript中将局部变量转换为全局变量

3
如何在JavaScript中将函数内的局部变量变为全局变量?
P.S.:只使用纯JavaScript,不用jQuery。
P.P.S.:请不要太过复杂,谢谢。 :)

你的意思是在函数内部声明一个全局变量吗? - Mritunjay
在变量声明前,只需删除 var - sbedulin
你想要达到什么目的?也许有更简单的解决方案。 - Fábio Santos
@FaridNouriNeshat 好的,谢谢你找到了那个...我撤回了我的关闭投票...现在让我们对正确的重复问题进行关闭... - rene
@sbedulin 请不要那样做。这是隐式全局变量的恐怖 - Oriol
3个回答

10

你可以通过以下方式在函数内部访问全局变量。

在函数作用域之外创建的任何变量都可以在函数内部引用。

Var myGlobalVar;

Function myFunction(){
   if(....) {
        myGlobalVar = 1;
   }
}

1
这在我的情况下有所帮助。 - MThead

6

不需要。

你可以将本地变量复制到全局作用域中,只需执行 window.myVar = myVar(将window替换为你的全局对象),但如果你重新分配本地变量,全局副本就不会跟随变化。


3
你可以给 window 对象分配一个键。它将成为一个全局变量。
function foo(){
   var bar1; // Local variable
   bar1 = 11;
   window.bar2 = bar1; // bar2 will be global with same value.
}

或者

在纯JavaScript中,如果您在任何地方声明变量而没有使用var关键字,它将处于全局作用域。

function foo(){
   var bar1; // Local variable
   bar1 = 11;
   bar2 = bar1; // bar2 will be global with same value.
}

注意:在上面的文本中,如果bar2尚未声明,它将进入window作用域,否则它将仅更新bar2。如果您想确保使用全局变量,请使用window.bar2 = bar1


1
那不是一个声明,那只是对一个非局部变量的赋值。 - Bergi
1
@Bergi 但它将在全局范围内。 - Mritunjay
1
只要它没有在 foo 的(非全局)父作用域中声明,就可以使用。 - Bergi
1
@Bergi更新了答案,谢谢,实际上我没有想到还会有其他代码。 - Mritunjay
2
这就是“隐式全局变量”的恐怖之处。最好避免使用它。而且在严格模式下它是行不通的。 - Oriol

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