声明空变量以使其全局化

1 javascript global-variables

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

var a;
function something(){
  a = Math.random()
}
Run Code Online (Sandbox Code Playgroud)

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

或正在使用......

var a = function(){
  var b = Math.random();
  return b;
}
document.write(a())
Run Code Online (Sandbox Code Playgroud)

真的唯一的办法吗?

除了调用函数"a()"之外,有没有办法使"b"全局?

Jos*_*ber 9

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

  1. 在全局范围内声明它,在任何函数范围之外.
  2. 明确地将其指定为窗口对象的属性:window.a = 'foo'.
  3. 根本没有声明(不推荐).如果var在第一次使用变量时省略该关键字,则无论代码在何处发生,都将全局声明.

注意#1:严格模式下,如果不声明变量,则会出现错误(如上面的#3).

注意#2:使用window对象分配全局变量(如上面的#2)在浏览器环境中工作正常,但在其他实现(例如nodejs)中可能不起作用,因为全局范围没有window对象.如果您正在使用不同的环境并希望显式分配全局变量,则必须了解调用全局对象的内容.