JavaScript预编译怎么理解?js运行代码这三步骤要知
Admin 2021-05-10 群英技术资讯 1661 次浏览
对于JavaScript的语法以及实现大家应该都有一定的了解了,但是对于JavaScript的预编译有很多人是不太清楚的,下面就从语法分析,预编译,解释执行这三步骤给大家介绍一下JavaScript的预编译。
js运行代码共分三步
JavaScript代码在运行时,首先会进行语法分析,通篇检查代码是否存在低级错误,然后进行预编译,整理内部的一个逻辑,最后再开始一行一行的执行代码
代码在执行之前,系统会通篇扫描一遍,检查代码有没有低级的语法错误,比如少写个大括号。
预编译发生在函数执行的前一刻。变量未经声明就赋值,此变量为全局对象所有
a = 3
var b = c = 4
一切声明的全局变量,全是window的属性
var a = 1 ===> window.a = 1
用一个例子来说明一下,也可以自己先给出一个答案,再继续往下看
function fn(a) {
console.log(a);
var a = 123;
console.log(a);
function a() {}
console.log(a);
var b = function() {};
console.log(b);
function d() {}
console.log(d)
}
fn(1);
第一步,创建AO(Activation Object)对象 {}第二步,找形参和变量声明,将变量和形参名做为AO属性名,值为undefined
{
a: undefined,
b: undefined,
}
第三步,将实参和形参统一
{
a: 1,
b: undefined,
}
第四步,找函数声明,值赋予函数体
{
a: function a() {},
b: undefined,
d: function d() {}
}
所以在函数fn执行的前一刻,a、b、d的值如上所示
所以fn(1)执行的结果为
// ƒ a() {}
// 123
// 123
// ƒ () {}
// ƒ d() {}
在全局作用域里,预编译过程有些许不同
一行一行的执行代码
这里有几个例题,有兴趣的可以看一下
function test(a, b) {
console.log(a);
console.log(b);
var b = 234;
console.log(b);
a = 123;
console.log(a);
function a() {}
var a;
b = 234;
var b = function() {};
console.log(a);
console.log(b);
}
test(1);
global = 100;
function fn() {
console.log(global);
global = 200;
console.log(global);
var global = 300;
}
fn();
var global;
function test() {
console.log(b);
if (a) {
var b = 100;
}
c = 234;
console.log(c);
}
var a;
test();
a = 10;
console.log(c);
多数情况下,我们都是采用下面的这种方式来处理预编译的一个过程
若是遇见复杂的情况就只能采用最原始的方式来解决问题了
关于JavaScript预编译的介绍就到这,希望大家阅读完这篇文章之后都有所收获,想要了解更多JavaScript预编译的内容大家可以继续关注其他文章。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了JavaScript把局部变量变成全局变量的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
实现方法:1、给按钮绑定点击事件并指定一个事件处理函数;2、在事件处理函数中利用“document.getElementById(出现元素对象).style.display="block";”语句设置点击按钮元素显示即可。
JS获取扩展名的方法有多少种,代码是什么,有不少朋友对此感兴趣,下面小编给大家整理和分享了相关知识和资料,易于大家学习和理解,有需要的朋友可以借鉴参考,下面我们一起来了解一下吧。
轮播图是现在很多网站平台都会应用的一种展现方式,通过定时或者鼠标点击就能够切换看到多张图片,很多商都会将轮播图作为产品展示,这样的效果是用户就能更容易获取商品信息。那么轮播图是如何实现的呢?下面就以基于JavaScript实现的简单轮播图为例,为大家简单介绍下。
用JavaScript怎样做查询快递单号的功能?一些朋友可能每天都会收到或者寄出很多快递,因此查询快递单号的功能是很重要的,本文给分享模拟京东快递单号查询的功能,实现效果及代码如下,感兴趣的朋友可以参考。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008