JavaScript 变量提升

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

请注意,用var关键字声明的变量将被提升。 letconst(在 ES6 中引入)没有提升效果。

什么是提升?

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

变量声明(发生提升)

在下面的代码中,在声明之前使用data

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

fun();

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

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

fun();

变量初始化(不会发生提升)

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

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

	var data = 1;

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

fun();

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