繁体   English   中英

声明空变量以使其成为全局变量

[英]Declaring Empty Variables to make them global

在JavaScript环境中,我可以在函数之前声明变量,以使该变量在全局级别上可访问。 例如:

var a;
function something(){
  a = Math.random()
}

这会使“ a”成为全局变量吗?

或正在使用...

var a = function(){
  var b = Math.random();
  return b;
}
document.write(a())

真的唯一的方法吗?

除了调用函数“ a()”之外,是否有其他方法可以使“ b”成为全局变量?

基本上有3种方法来声明全局变量:

  1. 任何函数范围之外的全局范围内声明它
  2. 明确地将其分配为window对象的属性: window.a = 'foo'
  3. 完全不声明 (不建议)。 如果您在首次使用变量时省略了var关键字,则无论代码中发生什么位置,都将对其进行全局声明。

注意#1:严格模式下 ,如果不声明变量(如上述#3),则会收到错误消息。

注意#2:使用window对象分配全局变量(如上面的#2)在浏览器环境中可以正常工作,但在其他实现(例如nodejs )中可能不起作用,因为全局范围中没有window对象。 如果您使用的是其他环境,并且想显式地分配全局变量,则必须知道全局对象的名称。

这会使“ a”成为全局变量吗?

var声明使变量在封闭范围内是局部的,通常是函数的作用域。 如果要在全局范围内执行代码,则a将是全局变量。 您也可以忽略var ,那么变量将是隐式全局的(尽管显式声明更好地显示了您的意图)。

除了调用函数“ a()”之外,是否有其他方法可以使“ b”成为全局变量?

b变量始终是函数a局部变量,除非删除var ,否则永远不会离开它。

在考虑使变量成为全局范围之前,应考虑JavaScript全局名称空间污染 声明的全局变量越多,应用程序与另一个应用程序的名称空间冲突并中断的可能性就越大。 因此,将全局变量的数量减到最少非常重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM