温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JavaScript预编译什么意思

发布时间:2021-03-01 16:39:12 来源:亿速云 阅读:193 作者:Leah 栏目:开发技术

这期内容当中小编将会给大家带来有关JavaScript预编译什么意思,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

JS运行三部曲

js运行代码共分三步

  • 语法分析

  • 预编译

  • 解释执行

JavaScript代码在运行时,首先会进行语法分析,通篇检查代码是否存在低级错误,然后进行预编译,整理内部的一个逻辑,最后再开始一行一行的执行代码

语法分析

代码在执行之前,系统会通篇扫描一遍,检查代码有没有低级的语法错误,比如少写个大括号。

预编译

预编译前奏

预编译发生在函数执行的前一刻。变量未经声明就赋值,此变量为全局对象所有

a = 3

var b = c = 4

一切声明的全局变量,全是window的属性

var a = 1 ===> window.a = 1

预编译四部曲

  1. 创建AO(Activation Object)对象(里面存储的是函数内部的局部变量)

  2. 找形参和变量声明,将变量和形参名做为AO属性名,值为undefined

  3. 将实参和形参统一

  4. 在函数体里面找函数声明,值赋予函数体

用一个例子来说明一下,也可以自己先给出一个答案,再继续往下看

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() {}

在全局作用域里,预编译过程有些许不同

  • 创建GO(Global Object)对象(里面存储的是函数内部的全局变量)GO === window

  • 找形参和变量声明,将变量和形参名做为GO属性名,值为undefined

  • 在函数体里面找函数声明,值赋予函数体

解释执行

一行一行的执行代码

实践题

这里有几个例题,有兴趣的可以看一下

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预编译什么意思了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI