天天看點

函數中變量的作用域以及變量提升

函數中變量的作用域以及變量提升

一、變量作用于域

1、函數就是一種特殊的變量

2、 一般函數内部不嵌套,可讀性差

3、變量的作用域向上尋找,距離該變量最近的{  },變量的作用域就是在該{  }的範圍之内

看簡單代碼案例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<script>
			//函數就是一種特殊的變量
			//一般函數内部不嵌套函數,可讀性差。
			function aa(){
				var a =10;
				//變量的作用域向上尋找,距離該變量最近的函數的大括号
				//變量的作用範圍,就是該{}之内的範圍.
				function bb(){
					console.log(a);
					}
			}
			aa();
			bb();
/*			bb這個函數夾在aa這個函數裡面,相當于在函數内部定義了一個變量即她是一個局部變量
			,是以在函數aa外部執行bb()是會報錯的。*/
			console.log(a);
		</script>
	</body>
</html>
           

執行結果:console中顯示bb沒有定義

函數中變量的作用域以及變量提升

二、變量提升

   1、 變量會把作用域提升到整個作用域的最前面,指派還是在原來的位置。

    2、全局變量和局部變量同時存在。優先局部

執行個體一:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		
		<script type="text/javascript">
			console.log(a);
			var a=10;
			//變量會把作用于提升到整個作用域的最前面。
			//指派還是在原來的位置
			
			//相當于
			var a;
			//console.log(a);得到的值為undefined 
			a=10;
		</script>
	</body>
</html>
           

執行個體二:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		
		<script type="text/javascript">
			console.log(a);
			var a=10;
			//變量會把作用于提升到整個作用域的最前面。
			//指派還是在原來的位置
			
			//相當于
			var a;
			//console.log(a);得到的值為undefined 
			a=10;
		</script>
	</body>
</html>
           

執行結果均為undefined;可以指派代碼試一試;

函數中變量的作用域以及變量提升

繼續閱讀