JS--JS运行三部曲

  • 语法分析(通篇扫描一遍但不执行)
  • 预编译
    • 预编译前奏
    • 预编译四步曲
  • 解释执行

语法分析(通篇扫描一遍但不执行)

预编译

function test(){console.log(a);
}
test();//上下两块代码都能执行并在控制台输出结果atest();
function test(){console.log(a);
}
console.log(a);
var a = 123;  //控制台输出undefined
如果只有 console.log(a); 则会报错,a is not defined
---------------------------------------------
var a = 123;
console.log(a);  //控制台输出123

函数声明整体提升:函数不管写在那一部分,系统总是会把函数提到逻辑的最前面
变量 声明提升:var a = 123;---->var a; a = 123; 系统会将var a;这一部分提到程序的最前面

//会输出什么?
console.log(a); //输出function a(a) {......}
function a(a){console.log(a); //输出function a() {}var a = 234;console.log(a); //输出234function a() {}
}
a(1);
var a = 123;

预编译前奏

  1. imply global 暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量 就为全局对象(window)所有
    eg: a = 123;
    eg: var a = b = 123; ----> b = 123; -> var a; -> a = b;
  2. 一切声明的全局变量,全是window的属性;window就是全局的域
    eg: var a = 123; ---->window.a = 123;

预编译四步曲

1、创建AO对象(Activation Object)(执行期上下文:函数产生的存储空间库)
2、找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
3、将实参值和形参统一
4、在函数体里面找函数声明,值赋予函数体

//不同地方的 console.log(a); 输出结果是什么?
function fn(a){console.log(a); //在AO里找值--->输出 function a() {}var a = 123; //预编译将 var a;提升上去了,执行 a = 123;修改AO中a的值console.log(a); //输出 123function a() {} //预编译读过,不再读console.log(a); //输出 123var b = function() {} //函数表达式,将AO中b的值改为function () {}console.log(b); //输出funtion () {}function d() {}
}
fn(1);预编译发生在函数执行的前一刻;预编译也发生在全局,第一步为创建GO对象;
GO(Global Object) === window

第一步:AO{ }
第二步
AO{
a : undefined,
b : undefined
}
第三步
AO{
a : 1,
b : undefined
}
第四步
AO{
a : function a() {},
b : undefined,
d : function d() {}
}

解释执行

JS--JS运行三部曲--渡一教育(视频笔记)相关推荐

  1. java渡一教育百度云_小白学java第1篇(视频课程为渡一教育)

    开始学习java了,准备将自己的的学习笔记整理出来,放在这,一方面是进行记录,另一方面也是想让自己坚持下去,如果有一起学习的伙伴可以一起学习打卡,相互监督!笔记内容是根据渡一教育的java课程整理的, ...

  2. js截屏 video_canvas与html5实现视频截图功能

    这段时间一直在研究canvas,突发奇想想做一个可以截屏视频的功能,然后把图片拉去做表情包,哈哈哈哈哈哈~~ 制作方法: 1.在页面中加载视频 在使用canvas制作这个截图功能时,首先必须保证页面上 ...

  3. Vue.js 内部运行机制之总结 常见问题解答

    Vue.js 内部运行机制之总结 & 常见问题解答 总结 在本小册的第一节中,笔者对 Vue.js 内部运行机制做了一个全局的概览,当时通过下面这张图把 Vue.js 拆分成一个一个小模块来介 ...

  4. 在vscode运行js 输出会合并_前端系列——JS的运行与输出

    问题: JS如何被运行? JS运行后如何输出结果? 回答: 1--解答:JS的运行有两种方式,第一种是把代码放到浏览器中,让浏览器内核来渲染解析:第二种是基于NODE,NODE也是一种基于V8引擎的渲 ...

  5. ie运行不了java脚本界面_IE浏览器不能运行js JS代码失效不能运行了如何解决

    IE浏览器不能运行js JS代码失效不能运行了如何解决 发布时间:2012-02-20 16:39:23   作者:佚名   我要评论 IE不能运行js,在IE浏览器js代码失效,js不能运行了怎么办 ...

  6. JS-对象,包装类--渡一教育(视频笔记)

    对象 对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性 1.用已学知识点,描述一下你心目中的对象 var mrDeng = {name : "MrDeng",ag ...

  7. uni-app(Vue.js)创建运行微信小程序

    uni-app(Vue.js)创建运行微信小程序 1.全局安装 npm install -g @vue/cli 需要安装node,官方网站,否则提示npm不可用 2.创建uni-app 新建文件夹,选 ...

  8. HTML5/Node.js/JS 经验谈 (会员专属)【讲师辅导】-曾亮-专题视频课程

    HTML5/Node.js/JS 经验谈 (会员专属)[讲师辅导]-5481人已学习 课程介绍         QQ 1405491181 链接 http://edu.csdn.net/lecture ...

  9. 五、JS单线程运行原理与多线程

    一.进程与线程 进程:正在执行的程序为一个进程.程序的一次运行,它会占用一片独立的内存空间.称为进程线程:线程是进程内一个独立的执行单元.1.一个进程中至少一个运行的线程,称为主线程.进程启动后自动创 ...

最新文章

  1. 第五次作业+036+吴心怡
  2. Matlab学习笔记——图形标注
  3. 机器学习模型评估标准选择循环图
  4. matlab armax 无法识别,求教:Java调用系统辨识工具箱内的armax函数出错
  5. RPC简介及框架选择
  6. 牛客题霸 [ 大数乘法] C++题解/答案
  7. 是什么摧毁了程序员的工作效率
  8. HTTP知识普及系列:HTTP返回状态码
  9. csdn 不登录浏览全文 chrome 浏览器
  10. pap与chap协议
  11. Pyhton注释符号使用方法及规范
  12. 11个审查Linux是否被入侵的方法
  13. python商业爬虫学徒计划_(教程)下载:麻瓜编程Python商业爬虫学徒计划麻瓜编程的视频python办公自动化麻瓜...
  14. Oracle创建用户后无法登录,报错ORA-01045: user lacks CREATE SESSION privilege
  15. #C语言#6.1 数据类型 笔记
  16. JVM学习之---了解JIT
  17. 视频处理系列︱利用达摩院ModelScope进行视频人物分割+背景切换(一)
  18. 262Echarts - 3D 路径图(Flights on Geo3D)
  19. android热敏打印机图片乱码,微信小程序小票打印功能(以及中文乱码的解决)...
  20. 无源晶振和有源晶振作用

热门文章

  1. sublime text 添加到鼠标右键功能
  2. CSS设置表格行列,给bootstrap table设置行列单元格样式
  3. HTML5期末大作业:电影票务网站设计——电影票务网站整套(24页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
  4. 【2021】Structure-Preserving Deraining with Residue Channel Prior Guidance
  5. js 树形结构数据 已知某一子节点 一次向上获取所有父节点
  6. 计算机视觉、模式识别、机器学习常用牛人主页链接
  7. BZOJ4167: 永远亭的竹笋采摘 分块
  8. 扔掉Windows 中的盗版软件,使用免费正版软件
  9. 种群遗传学的多态性衡量参数
  10. PYTHON使用chinese_calendar判断日期是否为节假日