函数中变量的作用域以及变量提升

函数中变量的作用域以及变量提升

一、变量作用于域

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;可以赋值代码试一试;

猜你喜欢

转载自blog.csdn.net/weixin_41544553/article/details/86593192