在JavaScript环境中,我可以在函数之前声明变量,以使变量在全局级别上可达。 例如:
var a;
function something(){
a = Math.random()
}
这会使“a”成为全局变量吗?
或正在使用......
var a = function(){
var b = Math.random();
return b;
}
document.write(a())
真的唯一的办法吗?
除了调用函数“a()”之外,有没有办法使“b”全局?
答案 0 :(得分:9)
基本上有3种方式来声明全局变量:
window.a = 'foo'
。var
关键字,则无论您的代码在何处发生,都将全局声明。注意#1:在strict mode中,如果您未声明变量,则会出现错误(如上面的#3所示)。
注意#2:使用window
对象分配全局变量(如上面的#2)在浏览器环境中工作正常,但可能在其他实现中不起作用(如作为nodejs),因为全局范围没有window
个对象。如果您正在使用不同的环境并希望显式分配全局变量,则必须了解调用全局对象的内容。
答案 1 :(得分:2)
这会使“a”成为全局变量吗?
var
declaration使变量局部变为封闭范围,通常是函数1。如果您在全局范围内执行代码,那么a
将是一个全局变量。您也可以省略var
,然后您的变量将隐式全局(尽管显式声明更能表明您的意图)。
除了调用函数“a()”之外,有没有办法使“b”全局?
您的b
变量始终是函数a
的本地变量,除非您删除var
,否则永远不会离开它。
答案 2 :(得分:0)
在考虑制作变量全局范围之前,您应该考虑JavaScript global namespace pollution。声明的全局变量越多,应用程序与另一个应用程序的命名空间和中断冲突的可能性就越大。因此,最大限度地减少全局变量的数量非常重要。