js 内部运行顺序--初学者必看

一、JavaScript是怎么运行的?

JavaScript会先扫描一遍所有的js代码,江湖人称 ---预处理。

然后在进行内部已经定好的优先级进行运行 ---执行阶段 。这是每个JavaScript初学者必须要懂的

二、JavaScript运行顺序的重要性?

了解一门语言的执行顺序,才能深入理解语法的由来,才能了解到某些语法的原理。

对比 用var 关键词声明的变量和不用var 关键词声明的变量的优先级。

	<script type="text/javascript">
		alert(a);//报错
		a=1;
	</script>
没有用var关键词声明的变量,在预处理阶段不会被读取,属于执行阶段的产物。
	<script type="text/javascript">
		alert(a);//undefined
		a=1;
		var a;
	</script>

用了var关键词声明的变量,在预处理阶段就被置顶,优先级很明显高于没有被var关键词声明的变量。

对比用var关键词声明的变量和用function关键词声明的变量的优先级。

	<script type="text/javascript">
		alert(a);//function(){}
		a=1;
		var a=3;
		function a(){}
		alert(a);//3
	</script>
用了var关键词和function关键词在处理的时候会被置顶,但function的优先级高于var关键词的优先级。会被置到最顶部。
根据已经确定好的执行顺序执行,大家可能会有疑惑var 关键字的a为什么不会覆盖 function的a,预处理的时候function声明
a的存在导致直接忽略掉了 var a 的存在,第一次打印就是function本身,赋值属于执行阶段,从上往下看 a=1就被a=3 覆盖
掉了。所以是a=3.

再来看一个例子

	<script type="text/javascript">
		var a;
		function a(){}
		alert(a);//function(){}
	</script>

	<script type="text/javascript">
		var a=3;
		function a(){}
		alert(a);//3
	</script>

大家很容易产生误区,在深入理解执行顺序后,其实是一个道理。第一个例子 var a至始至终都是被忽略的,内部顺序
始终没有function高,无论怎么用这个a 都是function的a。 第二个例子 我们把预处 理和执行阶段看做一个整体,看做上下文。a被赋值了处于下文,就不可能被function忽略掉。function优先级高于var,在var 的上方,被后面的var a 覆盖掉了。也很好的说明的function的优先级高于var 。

我为大家画个图方便大家理解


函数内部执行arguments会优先于function 因为属于外部传进函数,别的原理一样。
详解可以看我的博客预处理和函数预处理。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值