第九天,js之变量提升机制


举例代码1:

	<script>
		var a = "旧的a";
		function myfun(){
			alert(a+"\n");
			var a = "新的a";  /*①*/
			alert(a);
		}
		myfun();
	</script>

会先弹出undefined,再弹出新的a。疑惑就是第一个应该弹旧的a,但是确实显示a没有定义,这也是js的一个坑为什么会这样呢?因为js的变量提升机制,会将①处的新的a的声明(只提声明,不提值)提到函数的顶端,所以第一个alert()会显示a没有定义。


举例代码2:

	<script>
		var a = "旧的a";
		function myfun(){
			alert(a+"\n");
			a = "新的a";  /*①*/
			alert(a);
		}
		myfun();
	</script>

为什么这次第一个alert()会显示旧的a呢?因为①处的代码没有用var定义,所以这只是把旧的a进行新的赋值。也就是说新的a并没有声明可提。


猜你喜欢

转载自blog.csdn.net/qq_38006520/article/details/81057548
今日推荐