javascript核心技术(十七)JS中代码的运行方式/执行流程

[复制链接]
查看: 3309|回复: 31
发表于 2023-1-22 22:02:55 | 显示全部楼层 | 阅读模式
总的来讲,JS中代码的运行方式分为两个过程。
1、预编译过程: 语法检测 ->变量提升-> 函数预加载
2、执行过程:预编译通过,再一行一行从上到下执行代码
  1. 预编译过程中,如果有错误(编译错误),当前整个script/js文件中的代码不执行;继续找下一个script标签/js文件。
  2. 执行过程中,如果有错误(执行错误),当前这个script标签/js文件中,出错之前的代码正常执行,之后的代码不执行;继续找下一个script标签/js文件。
复制代码
下面我们来看以下代码,为了方便测试,这里我们暂且将代码写入script标签中:
<script>
var num = 100;
console.log(num);
// 编译错误 因为变量名不能是数字开头,所以该script脚本根本不会执行,而是去执行下一个script,输出500
var 100abc = 200;
</script>

<script>
    console.log(500);
</script>

<script>
var num = 100;
console.log(num);
var fn;
fn(); //执行错误,fn不是函数或未定义,所以不会输出下面的300
console.log(300);
</script>

<script>
    console.log(500);
</script>

javascript核心技术(十七)JS中代码的运行方式/执行流程

再看以下代码:
var f1 = 100;
function f1(){
    console.log(200);
}
//猜猜看,现在f1是什么
console.log(f1);


解释一下:
  1. 执行代码之前,先进行变量提升,再加载函数,然后赋值。
  2. 如果存在同名的变量名和函数名,始终是后面的覆盖前面的。
复制代码

所以,以上代码的最终执行过程是这样的

var f1;
function f1(){
    console.log(200);
}
f1 = 100;
console.log(f1);


javascript核心技术(十七)JS中代码的运行方式/执行流程

所以结果是100

以下写法是,先定义了函数,再声明变量。
实际执行流程中,会先声明变量,后定义函数。
function f1(){
    console.log(200);
}
var f1;
console.log(f1);

所以输出结果是f1函数,如下:
javascript核心技术(十七)JS中代码的运行方式/执行流程

以上就是关于JS中代码的运行方式及执行流程的讲解,大家务必认真理解,并亲自动手测试一下。


易博软件介绍

0

主题

9

帖子

5

积分

营销入门

Rank: 2

积分
5
发表于 2023-2-15 05:10:57 | 显示全部楼层
如梦初醒,衷心感谢!!!!!!

0

主题

15

帖子

8

积分

营销入门

Rank: 2

积分
8
发表于 2023-2-27 02:48:27 | 显示全部楼层
哎 ~~~~~~~~~~  默默无问两眼泪啊~~  太好了 , 这篇文章我一定要收藏,(楼主不介意吧)  他将是将是我踏上成功的催化剂

0

主题

17

帖子

9

积分

营销入门

Rank: 2

积分
9
发表于 2023-3-9 08:07:58 | 显示全部楼层
真是让人受益非浅,真希望多看到有这样的文章。  也真希望大家能多帮助我,我只是一个初学者,这篇的文章让我的平静了下来。  本以为程序设计不是什么难事。、

1

主题

181

帖子

93

积分

年费会员

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
93

年费会员

发表于 2023-3-20 09:48:42 | 显示全部楼层
感觉得自己很愚昧,自认为自己还不错,原来我差劲得要命,多谢你的提醒.

0

主题

15

帖子

8

积分

营销入门

Rank: 2

积分
8
发表于 2023-3-26 17:49:55 | 显示全部楼层
我看了一遍  感受很深啊  很感激你给我一个动力!!!  

0

主题

12

帖子

7

积分

营销入门

Rank: 2

积分
7
发表于 2023-4-1 22:08:12 | 显示全部楼层
写的很好,好佩服啊·  我想我会更加努力~~~~~~~~  

0

主题

15

帖子

8

积分

营销入门

Rank: 2

积分
8
发表于 2023-4-6 19:14:43 | 显示全部楼层
8错  8错

0

主题

22

帖子

12

积分

营销入门

Rank: 2

积分
12
发表于 2023-4-11 16:08:57 | 显示全部楼层
谢谢 向你致敬~~~!

0

主题

18

帖子

10

积分

营销入门

Rank: 2

积分
10
发表于 2023-4-16 13:13:53 | 显示全部楼层
此般教育,阿SIR说了不少,可真正受用,还是只有这文章
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!
3、问答求助区发帖求助后,如有其他用户热心帮您解决问题后,请自觉点击设为最佳答案按钮。

 
 
QQ在线客服
QQ技术支持
工作时间:
8:00-18:00
软著登字:
1361266号
官方微信扫一扫
weixin

QQ|小黑屋|Archiver|慈众营销 ( 粤ICP备15049986号 )|网站地图

自动发帖软件 | 自动发帖器 | 营销推广软件 | 网络营销工具 | 网络营销软件 | 网站推广工具 | 网络推广软件 | 网络推广工具 | 网页推广软件 | 信息发布软件 | 网站推广工具 | 网页推广软件

Powered by Discuz! X3.4   © 2012-2020 Comsenz Inc.  慈众科技 - Collect from 深圳吉宝泰佛文化有限公司 公司地址:罗湖区黄贝街道深南东路集浩大厦A1403

返回顶部 返回列表