ECMAScript 6+(ES6+).md
1. 前言本篇文章主要描述ES6及ES6以上版本,并不只是ES6。
1. ECMASCript 相关介绍1.1. 什么是 ECMAECMA(European Computer Manufacturers Association) 中文名称为欧洲计算机制造商协会, 这个组织的目标是评估、开发和认可电信和计算机标准。 1994 年后该组织改名为 Ecma 国际。
1.2. 什么是 ECMAScriptECMAScript 是由 Ecma 国际通过 ECMA-262 标准化的脚本程序设计语言。
1.3. 什么是 ECMA-262Ecma 国际制定了许多标准,而 ECMA-262 只是其中的一个,所有标准列表查看http://www.ecma-international.org/publications/standards/Standard.htm
1.4. ECMA-262 历史ECMA-262(ECMAScript)历史版本查看网址http://www.ecma-international.org/publications/standards/Ecma-262-arch.htm
1.5. ...
ECMAScript 6+(ES6+).md
1. 前言本篇文章主要描述ES6及ES6以上版本,并不只是ES6。
1. ECMASCript 相关介绍1.1. 什么是 ECMAECMA(European Computer Manufacturers Association) 中文名称为欧洲计算机制造商协会, 这个组织的目标是评估、开发和认可电信和计算机标准。 1994 年后该组织改名为 Ecma 国际。
1.2. 什么是 ECMAScriptECMAScript 是由 Ecma 国际通过 ECMA-262 标准化的脚本程序设计语言。
1.3. 什么是 ECMA-262Ecma 国际制定了许多标准,而 ECMA-262 只是其中的一个,所有标准列表查看http://www.ecma-international.org/publications/standards/Standard.htm
1.4. ECMA-262 历史ECMA-262(ECMAScript)历史版本查看网址http://www.ecma-international.org/publications/standards/Ecma-262-arch.htm
1.5. ...
JavaScript 模块化.md
内部的属性2. 操作数据的行为—>内部的函数
1.3. 模块化编码时是按照模块一个一个编码的, 整个项目就是一个模块化的项目
1.4. 模块化的进化过程1.4.1. 全局function模式
编码: 全局变量/函数
问题: 污染全局命名空间, 容易引起命名冲突/数据不安全
1.5.1. namespace模式 :
编码: 将数据/行为封装到对象中
解决: 命名冲突(减少了全局变量)
问题: 数据不安全(外部可以直接修改模块内部的数据)
1.6.1. IIFE模式/增强
IIFE : 立即调用函数表达式(匿名函数自调用)
编码: 将数据和行为封装到一个函数内部, 通过给window添加属性来向外暴露接口
引入依赖: 通过函数形参来引入依赖模块
123456789101112131415(function(window, module2) { var data = 'hellow world' function foo() { module2.xxx() console.log('f ...
JavaScript 模块化.md
内部的属性2. 操作数据的行为—>内部的函数
1.3. 模块化编码时是按照模块一个一个编码的, 整个项目就是一个模块化的项目
1.4. 模块化的进化过程1.4.1. 全局function模式
编码: 全局变量/函数
问题: 污染全局命名空间, 容易引起命名冲突/数据不安全
1.5.1. namespace模式 :
编码: 将数据/行为封装到对象中
解决: 命名冲突(减少了全局变量)
问题: 数据不安全(外部可以直接修改模块内部的数据)
1.6.1. IIFE模式/增强
IIFE : 立即调用函数表达式(匿名函数自调用)
编码: 将数据和行为封装到一个函数内部, 通过给window添加属性来向外暴露接口
引入依赖: 通过函数形参来引入依赖模块
123456789101112131415(function(window, module2) { var data = 'hellow world' function foo() { module2.xxx() console.log('f ...
JavaScript 预编译、全局对象(GO)、活动对象(AO)、执行上下文.md
全局对象(GO)、活动对象(AO)、预编译、执行上下文预编译Javascript 是一门解释性语言,逐行解析, 逐行执行。但是我们知道,一门语言,或解析或编译前,都可能存在一个阶段:预处理。JavaScript 解析引擎会首先把整个文件进行预处理, 以消除一些歧义,这个预处理的过程就被称为预编译。
本篇文章仅对全局变量、全局函数、局部变量、局部函数的形成流程进行研究,并不深入预编译原理。
以下是对相关概念的了解。
全局对象(Global Object)
在浏览器环境中, JavaScript 引擎会整合 标签中的内容, 产生window对象, 这个window对象就是全局对象。
在 node 环境中, 会产生global对象。
全局变量我们在<script>标签中声明的变量就是全局变量。全局变量会被挂在到全局对象上。
123var a = 123console.log(a) //①:100console.log(window.a) //②:100
① 和 ② 的输出结果一样,因为 ① 和 ② 都是打印window.a的属性值 123 。
所有的<script&g ...