天天看點

js中的變量提升和函數提升js中的變量提升和函數提升總結

js中的變量提升和函數提升

在js中對變量進行操作後列印值經常會出現undefined的現象。其實原因是因為js中有一個叫做變量提升的功能。舉例:
           
var data="lyyyyy";
	getData();
	function getData(){
		//第一次列印
		console.log("data值為: ", data);
		var	data="yyyyyyy";
		//第二次列印
		console.log("data值為: ", data);
	}
           

列印的值第一個為undefined,而第二個列印的值為yyyyy.

原因:
在執行getData()方法的時候會在函數内部首先将變量的聲明提升到第一步。
	然後再聲明函數内部的函數(如果函數内部有函數的話)。
	之後才會按照方法内部的邏輯先後順序執行代碼。前兩步隻是聲明!!!
看到這裡應該就已經知道為什麼會有上面那樣的結果了。
           

實際的方法内部代碼執行順序應該是這樣的:

function getData(){
		//一。聲明變量
		var	data;
		//二。聲明函數(如果函數内部有函數的話)

		//三。按照代碼的順序執行
		console.log("data值為: ", data);
		data="yyyyyyy";
		//第二次列印
		console.log("data值為: ", data);
	}
           

看到拆分後的代碼執行順序對結果也就不迷茫了。

為什麼有變量提升

==那麼為什麼會出現變量提升這個現象呢?==

總結

繼續閱讀