摘要: No1.语法和类型 1.声明定义 变量类型:var,定义变量;let,定义块域(scope)本地变量;const,定义只读常量。变量格式:以字母、下划线“_”或者$符号开头,大小写敏感。变量赋值:声明但未赋值的变量在使用时值为undefined,未声明的变量直接使用会抛异常。未赋值变量作计算:结果为 阅读全文
posted @ 2017-02-20 18:36 创业男生 阅读(168) 评论(0) 推荐(0)
摘要: 参考链接 官方文件 ECMAScript® 2015 Language Specification: ECMAScript 2015规格 ECMAScript® 2016 Language Specification: ECMAScript 2016规格 ECMAScript® 2017 Langu 阅读全文
posted @ 2017-02-20 18:28 创业男生 阅读(183) 评论(0) 推荐(0)
摘要: SIMD 概述 SIMD(发音/sim-dee/)是“Single Instruction/Multiple Data”的缩写,意为“单指令,多数据”。它是 JavaScript 操作 CPU 对应指令的接口,你可以看做这是一种不同的运算执行模式。与它相对的是 SISD(“Single Instru 阅读全文
posted @ 2017-02-20 18:27 创业男生 阅读(1572) 评论(0) 推荐(0)
摘要: 二进制数组 二进制数组(ArrayBuffer对象、TypedArray视图和DataView视图)是 JavaScript 操作二进制数据的一个接口。这些对象早就存在,属于独立的规格(2011年2月发布),ES6 将它们纳入了 ECMAScript 规格,并且增加了新的方法。 这个接口的原始设计目 阅读全文
posted @ 2017-02-20 18:26 创业男生 阅读(620) 评论(0) 推荐(0)
摘要: 读懂 ECMAScript 规格 概述 规格文件是计算机语言的官方标准,详细描述语法规则和实现方法。 一般来说,没有必要阅读规格,除非你要写编译器。因为规格写得非常抽象和精炼,又缺乏实例,不容易理解,而且对于解决实际的应用问题,帮助不大。但是,如果你遇到疑难的语法问题,实在找不到答案,这时可以去查看 阅读全文
posted @ 2017-02-20 18:25 创业男生 阅读(420) 评论(0) 推荐(0)
摘要: 编程风格 本章探讨如何将ES6的新语法,运用到编码实践之中,与传统的JavaScript语法结合在一起,写出合理的、易于阅读和维护的代码。 多家公司和组织已经公开了它们的风格规范,具体可参阅jscs.info,下面的内容主要参考了Airbnb的JavaScript风格规范。 块级作用域 (1)let 阅读全文
posted @ 2017-02-20 18:24 创业男生 阅读(264) 评论(0) 推荐(0)
摘要: Module 的加载实现 上一章介绍了模块的语法,本章介绍如何在浏览器和 Node 之中加载 ES6 模块,以及实际开发中经常遇到的一些问题(比如循环加载)。 浏览器加载 传统方法 在 HTML 网页中,浏览器通过<script>标签加载 JavaScript 脚本。 上面代码中,由于浏览器脚本的默 阅读全文
posted @ 2017-02-20 18:23 创业男生 阅读(3525) 评论(0) 推荐(1)
摘要: Module 的语法 概述 历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby 的require、Python 的import,甚至就连 CSS 都有@import,但是 JavaScr 阅读全文
posted @ 2017-02-20 18:22 创业男生 阅读(1091) 评论(0) 推荐(0)
摘要: 修饰器 类的修饰 修饰器(Decorator)是一个函数,用来修改类的行为。这是ES7的一个提案,目前Babel转码器已经支持。 修饰器对类的行为的改变,是代码编译时发生的,而不是在运行时。这意味着,修饰器能在编译阶段运行代码。 上面代码中,@testable就是一个修饰器。它修改了MyTestab 阅读全文
posted @ 2017-02-20 18:21 创业男生 阅读(816) 评论(0) 推荐(0)
摘要: Class Class基本语法 概述 JavaScript语言的传统方法是通过构造函数,定义并生成新对象。下面是一个例子。 上面这种写法跟传统的面向对象语言(比如C++和Java)差异很大,很容易让新学习这门语言的程序员感到困惑。 ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作 阅读全文
posted @ 2017-02-20 18:20 创业男生 阅读(347) 评论(0) 推荐(0)
摘要: async 函数 含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便。 async 函数是什么?一句话,它就是 Generator 函数的语法糖。 前文有一个 Generator 函数,依次读取两个文件。 写成async函数,就是下面这样。 一比较就会发现,async函数就是 阅读全文
posted @ 2017-02-20 18:19 创业男生 阅读(1060) 评论(0) 推荐(0)
摘要: Promise 对象 Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象。 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结 阅读全文
posted @ 2017-02-20 18:18 创业男生 阅读(263) 评论(0) 推荐(0)
摘要: Iterator和for...of循环 Iterator(遍历器)的概念 JavaScript原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6又添加了Map和Set。这样就有了四种数据集合,用户还可以组合使用它们,定义自己的数据结构,比如数组的成员是Map,Map 阅读全文
posted @ 2017-02-20 18:18 创业男生 阅读(1372) 评论(0) 推荐(0)
摘要: Reflect 概述 Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect对象的设计目的有这样几个。 (1) 将Object对象的一些明显属于语言内部的方法(比如Object.defineProperty),放到Reflect对象上。现阶段,某些方法同 阅读全文
posted @ 2017-02-20 18:17 创业男生 阅读(731) 评论(0) 推荐(0)
摘要: Proxy 概述 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。 Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访 阅读全文
posted @ 2017-02-20 18:15 创业男生 阅读(718) 评论(0) 推荐(0)
摘要: Symbol 概述 ES5的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是ES6引入 阅读全文
posted @ 2017-02-20 18:14 创业男生 阅读(325) 评论(0) 推荐(0)
摘要: Set和Map数据结构 Set 基本用法 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一个构造函数,用来生成 Set 数据结构。 上面代码通过add方法向 Set 结构加入成员,结果表明 Set 结构不会添加重复的值。 Set 函数可以接受 阅读全文
posted @ 2017-02-20 18:14 创业男生 阅读(437) 评论(0) 推荐(0)
摘要: 对象的扩展 属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值。下面是另一个例子。 除了属性简写,方法也可以简写。 下面是一个实际的例子。 这种写法用于函数的返回值,将 阅读全文
posted @ 2017-02-20 18:13 创业男生 阅读(319) 评论(0) 推荐(0)
摘要: 函数的扩展 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数log的参数y有没有赋值,如果没有,则指定默认值为World。这种写法的缺点在于,如果参数y赋值了,但是对应的布尔值为false,则该赋值不起作用。就像上面代码的最后一行,参数 阅读全文
posted @ 2017-02-20 18:12 创业男生 阅读(226) 评论(0) 推荐(0)
摘要: 数值的扩展 二进制和八进制表示法 ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示。 从 ES5 开始,在严格模式之中,八进制就不再允许使用前缀0表示,ES6 进一步明确,要使用前缀0o表示。 如果要将0b和0o前缀的字符串数值转为十进制,要使用Number方 阅读全文
posted @ 2017-02-20 18:10 创业男生 阅读(375) 评论(0) 推荐(0)