# JavaScript 变量提升

> 原文： [https://howtodoinjava.com/typescript/javascript-variable-hoisting/](https://howtodoinjava.com/typescript/javascript-variable-hoisting/)

JavaScript 中的变量提升意味着**将所有变量声明移到函数**的顶部。 这意味着，如果我们在函数末尾声明一个变量，则运行时会将其提升到顶部，并且如果在声明之前使用了该变量，则不会有任何错误。

> 请注意，用`var`关键字声明的变量将被提升。 `let`和`const`（在 ES6 中引入）没有提升效果。

## 什么是提升？

如前所述，提升意味着将变量声明移到顶部。 重要的是要注意，如果初始化变量，则不会发生**提升**。

#### 变量声明（发生提升）

在下面的代码中，在声明之前使用`data`。

```java
function fun() 
{
	data = 1;
	console.log(data);	//Outputs 1
	var data;
}

fun();

```

在运行时，提升以上代码后，代码将如下所示：

```java
function fun() 
{
	var data;	/*** moved to top ***/
	data = 1;
	console.log(data);	//Outputs 1
}

fun();

```

#### 变量初始化（不会发生提升）

在下面的代码中，`data`也进行了声明和初始化。 在这种情况下，将不发生提升并且不会向上移动。 因此，`data`的值只有在声明和初始化后才可用。

```java
function fun() 
{
	console.log(data);	//Outputs 'undefined'

	var data = 1;

	console.log(data);	//Outputs 1
}

fun();

```

在评论部分中，将您与 Javascript 中的**变量提升**有关的问题放到我这里。

学习愉快！