JavaScript 基础
诞生
JavaScript 诞生于 1995 年,有以下特征:
借鉴了 C 语言的基本语法
借鉴了 Java 语言的数据类型和内存管理
借鉴 Scheme 语言,将函数提升到“第一等公民”(first class)的地位
借鉴 Self 语言,使用基于原型(prototype)的继承机制
发展
1995.9,LiveScript
1995.12,JavaScript
1997.6,第一版 ECMAScript 发布
1999.12,第三版 ECMAScript 发布
2009.12,第五版 ECMAScript 发布
2009 年,Ryan 创建了 Node.js
2010 年,Isaac 基于 Node.js 写出了 NPM
2015.6,第六版 ECMAScript 发布,简称 ES6,之后每年发布一个新的版本,统称为 ESNext。
特点
JavaScript 是单线程的,动态的弱类型的解释类语言,编程范式同时支持命令式(例如:面相对象)和声明式(例如函数式编程)
JavaScript 是单线程,但是浏览器是多进程的,每个 Tab 页签就是一个渲染进程,渲染进程下又包含 GUI 线程和 JS 线程,此处的 JS 线程才是 JavaScript 运行的地方,所以才说 JavaScript 是单线程的。
GUI 线程,也称为渲染线程,例如渲染引擎 Blink 就运行在这个线程,用来解析 HTML 结构和 CSS 样式,渲染页面的。
JS 线程,例如 JS 引擎 V8 就运行在这个线程,用来解释和执行 JavaScript 代码。
GUI 线程跟 JS 线程是互斥的,JavaScript 代码是可以改变页面的 DOM 的,此时如果 GUI 线程在解析渲染的同时 JavaScript 修改了页面元素的位置,此时页面上展示出来的可能就不是最新的。所以 GUI 线程渲染的时候,JS 线程是停顿的,JS 线程在执行的时候,GUI 线程就是停顿的。
语言分类
发展
机器语言
汇编语言
中级语言:例如 C
高级语言:
面向对象语言:C++
函数式语言:Lisp
基于原型和头等函数的多范式语言:JavaScript
编程范式
解释一下编程范式,编程范式根据一下特征进行分类:
是否允许副作用
操作的执行顺序
代码组织方式
状态管理方式
词法和语法
命令式
面向过程
自顶向下,结构化编程
存在的问题:数据与算法关系弱;不利于修改和扩展;不利于代码复用
面向对象
封装、继承、多态、依赖注入
面向对象编程的问题在于,它总是附带着所有它需要的隐含环境。
声明式
函数式
可缓存、可移植、可推理、可测试、可并行
响应式
Last updated
Was this helpful?