<!--
1, 参考:http://es6.ruanyifeng.com/#docs/intro
ES6: JS语言下一代的标准,发布于2015年6月。
目标:使JS可以编写复杂的大型应用程序,成为企业级开发语言
2,let & const
let: 代码块有效,不存在变量提升。
暂时性死区:ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
let不允许在相同作用域内,重复声明同一个变量。
const: 声明一个只读的常量。一旦声明,常量的值就不能改变。块级作用域内有效。
const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。
如果真的想将对象冻结,应该使用Object.freeze方法。e.g. const foo = Object.freeze({});
global对象:ES5的顶层对象。(浏览器里面,顶层对象是window,但 Node 和 Web Worker 没有window)
3,变量解析赋值
变量的解析赋值: let [a, b, c] = [1, 2, 3]; let [x = 1] = [null];//默认值设置。
对象的解析赋值:let { foo: baz } = { foo: "aaa", bar: "bbb" };//foo是匹配模式,baz是变量
用途:1>,交换值[x, y] = [y, x];2>,从函数返回多个值;3>,函数参数的定义.4>,提取JSON数据
5>,函数参数的默认值;6>,遍历Map结构;7>,输入模块的指定方法
4, 字符串扩展
字符的 Unicode 表示法:'\z' === 'z' // true; '\172' === 'z' // true; '\x7A' === 'z' // true; '\u007A' === 'z' // true; '\u{7A}' === 'z' // true
codePointAt(): 能够正确处理多个字节储存的字符,返回一个字符的码点。
String.fromCodePoint(): 可以识别0xFFFF的字符,弥补了String.fromCharCode方法的不足。在作用上,正好与codePointAt方法相反。
at():可以识别Unicode编号大于0xFFFF的字符,返回正确的字符。
normalize(): 用来将字符的不同表示方法统一为同样的形式,这称为Unicode正规化。
includes()/startsWith()/endsWith():略
repeat(): 返回一个新字符串,表示将原字符串重复n次. 'hello'.repeat(2) // "hellohello"
padStart()用于头部补全,padEnd()用于尾部补全。 'x'.padStart(5, 'ab') // 'ababx'; 'x'.padEnd(4, 'ab') // 'xaba'
模板字符串:略. 如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。
String.raw(): 往往用来充当模板字符串的处理函数,返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,对应于替换变量后的模板字符串
5, 正则的扩展
new RegExp(/xyz/i); new RegExp(/xyz/, 'i');
字符串对象共有4个方法,可以使用正则表达式:match()、replace()、search()和split()。
u修饰符: Unicode模式”,用来正确处理大于\uFFFF的Unicode字符
点(.)字符在正则表达式中,含义是除了换行符以外的任意单个字符。
y修饰符,叫做“粘连”(sticky)修饰符。
ES6为正则表达式新增了flags属性,会返回正则表达式的修饰符。
6, 数值的扩展
二进制和八进制数值的新的写法: 分别用前缀0b(或0B)和0o(或0O)表示。
// 严格模式
(function(){
'use strict';
console.log(0o11 === 011);
})()
Number.isFinite():是否有限, Number.isNaN(), Number.parseInt(), Number.parseFloat(),Number.isInteger()
Number.EPSILON: 在于为浮点数计算,设置一个误差范围,可以接受的误差范围。. Number.EPSILON.toFixed(20)
Number.isSafeInteger(): 整数范围在-2^53到2^53之间(不含两个端点),超过这个范围,无法精确表示这个值。
Math.trunc方法用于去除一个数的小数部分,返回整数部分。
7, 数组的扩展
Array.from: 用于将两类对象转为真正的数组
Array.of: 用于将一组值,转换为数组
copyWithin方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组. [1, 2, 3, 4, 5].copyWithin(0, 3, 4);/[4, 2, 3, 4, 5]
-- target(必需):从该位置开始替换数据。
-- start(可选):从该位置开始读取数据,默认为0。如果为负值,表示倒数。
-- end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数。
find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数. [1, 4, -5, 10].find((n) => n < 0)
entries(),keys()和values()——用于遍历数组
includes(): 返回一个布尔值,表示某个数组是否包含给定的值. [1, 2, 3].includes(4); // false
8, 函数的扩展
ES6 允许为函数的参数设置默认值. 有默认值的参数都不是尾参数。这时,无法只省略该参数,而不省略它后面的参数,除非显式输入undefined。
使用参数默认值时,函数不能有同名参数。
rest 参数(形式为“...变量名”):用于获取函数的多余参数,这样就不需要使用arguments对象了
ES6允许使用“箭头”(=>)定义函数。
9, 对象的扩展
Object.is(): 比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。
Object.assign(): 用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。是浅拷贝,而不是深拷贝.
10, Symbol
原始数据类型Symbol,表示独一无二的值。var s1 = Symbol('foo');s1.toString() // "Symbol(foo)"
它是JavaScript语言的第七种数据类型,前六种是:Undefined、Null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。
注意,Symbol函数前不能使用new命令,否则会报错。
可用于消除魔法字符串
Symbol.for():重新使用同一个Symbol值
Symbol.keyFor(): 返回一个已登记的 Symbol 类型值的key。
11, Set 和 Map 数据结构
Set: 类似于数组,但是成员的值都是唯一的,没有重复的值。
const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); //[2,3,4,5]
keys():返回键名的遍历器. e.g. for (let item of set.keys())
values():返回键值的遍历器. e.g. for (let item of set.values())
entries():返回键值对的遍历器
forEach():使用回调函数遍历每个成员 set.forEach((value, key) => console.log(value * 2) )
WeakSet的成员只能是对象,而不能是其他类型的值。
WeakSet中的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于WeakSet之中
12, Proxy
Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。
13, Reflect
14, Promise 对象
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大.
Promise也有一些缺点。首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消。
其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。
第三,当处于Pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
Promise.prototype.then(): 作用是为Promise实例添加状态改变时的回调函数。
Promise.prototype.catch(): 用于指定发生错误时的回调函数。
Promise.all: 方法用于将多个Promise实例,包装成一个新的Promise实例。
Promise.resolve: 将现有对象转为Promise对象. var jsPromise = Promise.resolve($.ajax('/whatever.json'));
应用:加载图片
15, Iterator 和 for...of 循环
16, Generator 函数的语法
Generator 函数是 ES6 提供的一种异步编程解决方案。
有两个特征。一是,function关键字与函数名之间有一个星号;二是,函数体内部使用yield语句,定义不同的内部状态(yield在英语里的意思就是“产出”)。
function* helloWorldGenerator() {
yield 'hello';
yield 'world';
return 'ending';
}
var hw = helloWorldGenerator();
hw.next() // { value: 'hello', done: false }
hw.next() // { value: 'world', done: false }
hw.next() // { value: 'ending', done: true }
hw.next() // { value: undefined, done: true }
17, Generator 函数的异步应用
18, async 函数
19, Class
20, Decorator
21, Module 的语法
22, Module 的加载实现
23, 编程风格
24, 读懂规格
25, 二进制数组
26, SIMD
是“Single Instruction/Multiple Data”的缩写,意为“单指令,多数据”。
是 JavaScript 操作 CPU 对应指令的接口,你可以看做这是一种不同的运算执行模式。
SIMD 通常用于矢量运算。
-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!-- <script src="browser.min.js"></script> <script type="text/babel"></script>-->
<script>
// IE10及以上版本
//IE9可以用npm来安装babel来支持
const Name = '张三';//使用新增的关键字:const声明常量
// alert(Name);
//console.log(Name);
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6]();//6
var tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError
// let tmp; //报错
}
var map = new Map();
map.set('first', 'hello');
for (let [key, value] of map) {
console.log(key + " is " + value);
}
console.log('字符串的遍历器接口:');
for (let codePoint of 'foo') {
console.log(codePoint);
}
</script>
</head>
<body>
</body>
</html>
相关推荐
根据提供的文件信息“ECS 精英電腦 主板線路圖 型號 P6IPA10.pdf”,我们可以深入探讨关于这款主板的技术细节与关键特性。以下是对该主板的一些核心知识点的总结与解释: ### ECS 精英电脑 P6IPA10 主板概述 ECS...
ECS-700系统硬件课程的目标是让学习者全面了解ECS-700系统的基本架构、控制节点硬件、操作节点硬件以及通讯网络。通过本课程的学习,学员将掌握ECS-700系统的基本知识和操作技能。 首先,ECS-700是一种集散控制系统...
ECS-700基础编程课程涵盖了组态软件支持的编程语言、数据类型、变量类型和位号成员等关键知识点,以及不同编程语言的编程步骤和语法规则。为了深入理解这些概念,我们需要逐一分析课程中提到的各个方面。 首先,...
ECS700组态软件是一款专用于DCS(分布式控制系统)配置和管理的应用程序,它为用户提供了在电力、冶金、石化等多个行业中实现自动化控制的工具。在深入探讨ECS700软件之前,先要理解DCS系统的基本概念。分布式控制...
这是浙江中控开阳热电的工程例子 使用ECS700系统
### ECS-700系统构架培训资料解析 #### 培训背景与目标 - **培训背景**:“ECS-700培训资料一(系统构架)”旨在为学员提供关于浙大中控ECS-700系统的深入理解,特别是其系统架构方面的知识。ECS-700作为一款国产...
ECS(Entity Component System)游戏引擎设计是一种新兴的游戏编程范式,它旨在简化和优化游戏开发过程。传统的对象导向编程(OOP)在游戏开发中虽然广泛使用,但随着游戏规模的扩大,OOP设计中的紧密耦合和继承导致...
C# ECS(Entity Component System)框架是一种用于游戏开发和实时应用程序设计的现代编程模式。它将对象分解为组件,每个组件包含特定的数据,而系统则负责处理这些组件数据并执行相关逻辑。这种方式鼓励代码解耦,...
6. **工程管理**:软件提供项目管理工具,包括工程备份、恢复、版本控制等功能,确保工程的安全和高效管理。 7. **网络功能**:ECS-100支持多用户同时访问,可以构建分布式监控网络,便于远程监控和故障诊断。 8. ...
阿里云ECS是一种弹性计算服务,它提供了快速的计算能力,可帮助用户构建和管理应用程序。为了确保用户能够顺利入门使用阿里云ECS,本文将详细介绍其使用方法,包括实例配置、操作系统更换、快照与镜像使用、磁盘扩容...
【浙江中控DCS ECS700培训资料】是一份详尽的学习资源,专注于介绍浙江中控技术有限公司的分布式控制系统(DCS)——ECS700系统。这份资料涵盖了DCS ECS700的核心组成部分及其操作应用,旨在帮助用户理解和掌握该...
ECS是当前阿里云的核心产品,又是很多云服务的基座产品,随着集团内部上云,越来越多的应用和服务构建在ECS之上,而针对使用ECS的阿里云用户提交的售后问题也是多而广,为了更好地服务用户,并使得越来越多的用户...
【自动化集装箱码头TOS-ECS接口研究】 自动化集装箱码头是现代港口的重要组成部分,其高效、安全的运营离不开码头操作系统(TOS)与设备控制系统(ECS)的紧密协作。TOS负责码头整体作业的逻辑控制,包括船舶计划、...
6. **动态库存**:Ansible的动态库存插件允许直接从阿里云API获取ECS实例信息,无需手动维护主机列表,大大提高了灵活性和准确性。 7. **安全性与合规性**:通过Ansible,用户可以定义并强制执行安全策略,例如限制...
总之,LED-ECS编辑控制系统6.1.3是一款全面且强大的LED显示屏管理软件,它不仅支持最新的6代控制卡,还向下兼容5代U盘控制卡,提供多样化的编辑工具和安全设置,满足不同用户的需求。通过安装"LED-ECS V6.1.3(SVN265...
【Apache ECS】是一种Java库,全称为"Enterprise Component Services",它为Servlet环境提供了一种更高级别的输出处理机制。在传统的Servlet编程中,我们通常使用`out.println()`方法将内容写入到响应流中。然而,...
Unity ECS(Entity Component System)是Unity引擎中的一种高性能、数据驱动的游戏开发框架,它用于构建大规模、复杂的实时应用。ECS代表实体(Entity)、组件(Component)和系统(System),这是一种设计模式,...
浙大中控ECS-700是浙大中控技术股份有限公司推出的一款集散控制系统(DCS),广泛应用于各种工业生产过程的自动控制。本文主要介绍ECS-700在不同控制方式下的功能块使用示例,包括单回路控制、串级控制、比例控制、分...
掌握云服务其的特点,与传统服务器的区别,ECS的功能、组成、应用场景。掌握ECS的基本操作,了解阿里云的弹性计算。
亚马逊ECS(Amazon Elastic Container Service)是亚马逊AWS提供的一个完全托管的容器管理服务,它让开发者可以轻松地在云端运行和管理Docker容器。通过使用ECS,用户无需关心基础设施的配置,而是专注于应用程序的...