# JavaScript：定义全局变量的正确方法

> 原文： [https://howtodoinjava.com/javascript/javascript-correct-way-to-define-global-variables/](https://howtodoinjava.com/javascript/javascript-correct-way-to-define-global-variables/)

我们知道什么是[**全局变量**](https://en.wikipedia.org/wiki/Global_variable "Global variable")或常量，它们是可在应用范围内访问的字段。 在 Java 中，通常是通过定义“`public static`”字段来完成的。 在这里，通过添加`final`关键字，我们可以将全局变量更改为**全局常量**。 很容易，对吧？

但是 javascript 呢？ 这些脚本语言没有这些访问修饰符等，那么我们有什么选择呢？

![javascript jquery](img/fdb06e5336777412c4e14a559f150ebb.png "javascript jquery")

我在正常工作时间遇到了类似的情况，并且知道以传统的 javascript 方式定义全局变量会破坏生产代码。 **传统方式**是：

```java

var iAmGlobal = "some val"; //Global variable declaration

//Any place in other part of code

function doSomething()
{
    //iAmGlobal = "changed value";
    alert(iAmGlobal); //I am accessible here too !!
}

```

这些类型实际上是在很长一段时间内声明的，对于一些不幸的伙伴来说，它会导致 Java 脚本中出现著名的“对象不支持此属性或方法”错误。 如果您还记得一个 **IE 错误，它带有“`var a = foo`”，则仅声明了文件范围**的全局变量。 这是 IE 臭名昭著的解释器的问题。

那么，在 JavaScript 中声明全局变量的正确方法是什么？

## 在 JavaScript 中声明全局变量的正确方法

正确的方法是使用窗口对象。 并使用如下语法：

```java

var window.iAmGlobal = "some val"; //Global variable declaration with window.

//Any place in other part of code

function doSomething()
{
    alert(window.iAmGlobal); //I am accessible here too !!
    //OR
    alert(iAmGlobal); //I am accessible here too !!
}

```

通过以这种方式定义全局变量，您将使 JavaScript 更加健壮和可靠。

## 要点：

1.  使用`window`关键字以“`window.VAR_NAME`”的形式定义全局变量
2.  您可以使用“`window.VAR_NAME`”或直接“`VAR_NAME`”访问变量
3.  不要使用同名的其他变量，否则可能会导致不良结果。

所有人都在这个话题上。

**进一步阅读**： [http://stackoverflow.com/questions/4862193/javascript-global-variables](https://stackoverflow.com/questions/4862193/javascript-global-variables)

**学习愉快！**