JS--JS运行三部曲--渡一教育(视频笔记)
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;
预编译前奏
- imply global 暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量 就为全局对象(window)所有
eg: a = 123;
eg: var a = b = 123; ----> b = 123; -> var a; -> a = b; - 一切声明的全局变量,全是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运行三部曲--渡一教育(视频笔记)相关推荐
- java渡一教育百度云_小白学java第1篇(视频课程为渡一教育)
开始学习java了,准备将自己的的学习笔记整理出来,放在这,一方面是进行记录,另一方面也是想让自己坚持下去,如果有一起学习的伙伴可以一起学习打卡,相互监督!笔记内容是根据渡一教育的java课程整理的, ...
- js截屏 video_canvas与html5实现视频截图功能
这段时间一直在研究canvas,突发奇想想做一个可以截屏视频的功能,然后把图片拉去做表情包,哈哈哈哈哈哈~~ 制作方法: 1.在页面中加载视频 在使用canvas制作这个截图功能时,首先必须保证页面上 ...
- Vue.js 内部运行机制之总结 常见问题解答
Vue.js 内部运行机制之总结 & 常见问题解答 总结 在本小册的第一节中,笔者对 Vue.js 内部运行机制做了一个全局的概览,当时通过下面这张图把 Vue.js 拆分成一个一个小模块来介 ...
- 在vscode运行js 输出会合并_前端系列——JS的运行与输出
问题: JS如何被运行? JS运行后如何输出结果? 回答: 1--解答:JS的运行有两种方式,第一种是把代码放到浏览器中,让浏览器内核来渲染解析:第二种是基于NODE,NODE也是一种基于V8引擎的渲 ...
- ie运行不了java脚本界面_IE浏览器不能运行js JS代码失效不能运行了如何解决
IE浏览器不能运行js JS代码失效不能运行了如何解决 发布时间:2012-02-20 16:39:23 作者:佚名 我要评论 IE不能运行js,在IE浏览器js代码失效,js不能运行了怎么办 ...
- JS-对象,包装类--渡一教育(视频笔记)
对象 对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性 1.用已学知识点,描述一下你心目中的对象 var mrDeng = {name : "MrDeng",ag ...
- uni-app(Vue.js)创建运行微信小程序
uni-app(Vue.js)创建运行微信小程序 1.全局安装 npm install -g @vue/cli 需要安装node,官方网站,否则提示npm不可用 2.创建uni-app 新建文件夹,选 ...
- HTML5/Node.js/JS 经验谈 (会员专属)【讲师辅导】-曾亮-专题视频课程
HTML5/Node.js/JS 经验谈 (会员专属)[讲师辅导]-5481人已学习 课程介绍 QQ 1405491181 链接 http://edu.csdn.net/lecture ...
- 五、JS单线程运行原理与多线程
一.进程与线程 进程:正在执行的程序为一个进程.程序的一次运行,它会占用一片独立的内存空间.称为进程线程:线程是进程内一个独立的执行单元.1.一个进程中至少一个运行的线程,称为主线程.进程启动后自动创 ...
最新文章
- 第五次作业+036+吴心怡
- Matlab学习笔记——图形标注
- 机器学习模型评估标准选择循环图
- matlab armax 无法识别,求教:Java调用系统辨识工具箱内的armax函数出错
- RPC简介及框架选择
- 牛客题霸 [ 大数乘法] C++题解/答案
- 是什么摧毁了程序员的工作效率
- HTTP知识普及系列:HTTP返回状态码
- csdn 不登录浏览全文 chrome 浏览器
- pap与chap协议
- Pyhton注释符号使用方法及规范
- 11个审查Linux是否被入侵的方法
- python商业爬虫学徒计划_(教程)下载:麻瓜编程Python商业爬虫学徒计划麻瓜编程的视频python办公自动化麻瓜...
- Oracle创建用户后无法登录,报错ORA-01045: user lacks CREATE SESSION privilege
- #C语言#6.1 数据类型 笔记
- JVM学习之---了解JIT
- 视频处理系列︱利用达摩院ModelScope进行视频人物分割+背景切换(一)
- 262Echarts - 3D 路径图(Flights on Geo3D)
- android热敏打印机图片乱码,微信小程序小票打印功能(以及中文乱码的解决)...
- 无源晶振和有源晶振作用
热门文章
- sublime text 添加到鼠标右键功能
- CSS设置表格行列,给bootstrap table设置行列单元格样式
- HTML5期末大作业:电影票务网站设计——电影票务网站整套(24页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
- 【2021】Structure-Preserving Deraining with Residue Channel Prior Guidance
- js 树形结构数据 已知某一子节点 一次向上获取所有父节点
- 计算机视觉、模式识别、机器学习常用牛人主页链接
- BZOJ4167: 永远亭的竹笋采摘 分块
- 扔掉Windows 中的盗版软件,使用免费正版软件
- 种群遗传学的多态性衡量参数
- PYTHON使用chinese_calendar判断日期是否为节假日