js底层原理
1.js数据类型:
(1)基本数据类型(按值访问):String(字符串)、Number(数字)、Boolean(布尔)、Null(对空)、Undefined(未定义)、Symbol
(2)引用数据类型(引用地址访问【指针】):对象(Object)、数组(Array)、函数(Function)
2.什么是js
JavaScript:基于对象的动态、弱类型脚本语言,不像其他语言(如java/C++等编译型语言,需要先编译成字节码(机器码),然后再执行),js不需要编译,可以直接执行在浏览器。
js运行过程:编译和执行。当js控制器转到可以执行的代码时,会创建与之对应的执行上下文(简称EC),执行上下文可以理解为执行环境(执行上下文只能由JS解释器创建,也只能由JS解释器使用,用户是不可以操作该“对象”的)。
3.js底层运行原理
(1)每调用一个函数就会生成一个执行环境(俗称执行上下文),执行上下文环境数量没有限制
(2)单线程
(3)同步执行,只有栈顶的上下文处于执行中,其他上下文需要等待
(4)每次某个函数被调用,就会有新的上下文被创建,即使是调用的自身函数,也是如此
4.js中的执行环境
(1)全局环境:当JS引擎进入一个代码块时,如遇到标签,就是进入一个全局执行环境
(2)函数环境:当一个函数被调用时,在函数内部就形成了一个函数执行环境
(3)eval():把字符串单做JS代码执行,不推荐使用
5.js输出数据的方式
(1)使用 window.alert() 弹出警告框
(2) 使用 document.write() 方法将内容写到HTML文档中
(3) 使用 innerHTML 写入到HTML元素中
(4) 使用 console.log() 写入到浏览器的控制台
6.js执行上下文的特点
(1)栈底永远是全局执行上下文,有且仅有一个
(2)全局执行上下文只有在浏览器关闭时,才会弹出栈
(3)其他的执行上下文的数量没有限制
(4)栈顶永远是当前活动执行上下文,其余的都处于等待状态中,一旦执行完毕,立即弹出栈,然后控制权交回下一个执行上下文
(5)函数只有在每次被调用时,才会为其创建上下文,函数被声明时是没有的
7.js执行上下文过程
(1)创建阶段:此阶段主要完成三件事情:
1、创建变量对象
2、建立作用域链
3、确定this指向
(2)执行阶段:
此阶段主要完成变量赋值、函数调用、其他操作