`

ECS6

阅读更多

 

<!-- 

  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.pdf”,我们可以深入探讨关于这款主板的技术细节与关键特性。以下是对该主板的一些核心知识点的总结与解释: ### ECS 精英电脑 P6IPA10 主板概述 ECS...

    ECS-700系统硬件

    ECS-700系统硬件课程的目标是让学习者全面了解ECS-700系统的基本架构、控制节点硬件、操作节点硬件以及通讯网络。通过本课程的学习,学员将掌握ECS-700系统的基本知识和操作技能。 首先,ECS-700是一种集散控制系统...

    ECS-700 基础编程

    ECS-700基础编程课程涵盖了组态软件支持的编程语言、数据类型、变量类型和位号成员等关键知识点,以及不同编程语言的编程步骤和语法规则。为了深入理解这些概念,我们需要逐一分析课程中提到的各个方面。 首先,...

    ECS700组态软件

    ECS700组态软件是一款专用于DCS(分布式控制系统)配置和管理的应用程序,它为用户提供了在电力、冶金、石化等多个行业中实现自动化控制的工具。在深入探讨ECS700软件之前,先要理解DCS系统的基本概念。分布式控制...

    ECS700工程例子

    这是浙江中控开阳热电的工程例子 使用ECS700系统

    ECS-700培训资料一(系统构架)

    ### ECS-700系统构架培训资料解析 #### 培训背景与目标 - **培训背景**:“ECS-700培训资料一(系统构架)”旨在为学员提供关于浙大中控ECS-700系统的深入理解,特别是其系统架构方面的知识。ECS-700作为一款国产...

    ECS Game Engine Design

    ECS(Entity Component System)游戏引擎设计是一种新兴的游戏编程范式,它旨在简化和优化游戏开发过程。传统的对象导向编程(OOP)在游戏开发中虽然广泛使用,但随着游戏规模的扩大,OOP设计中的紧密耦合和继承导致...

    C# ECS框架

    C# ECS(Entity Component System)框架是一种用于游戏开发和实时应用程序设计的现代编程模式。它将对象分解为组件,每个组件包含特定的数据,而系统则负责处理这些组件数据并执行相关逻辑。这种方式鼓励代码解耦,...

    ecs-100组态软件

    6. **工程管理**:软件提供项目管理工具,包括工程备份、恢复、版本控制等功能,确保工程的安全和高效管理。 7. **网络功能**:ECS-100支持多用户同时访问,可以构建分布式监控网络,便于远程监控和故障诊断。 8. ...

    阿里云Ecs入门使用

    阿里云ECS是一种弹性计算服务,它提供了快速的计算能力,可帮助用户构建和管理应用程序。为了确保用户能够顺利入门使用阿里云ECS,本文将详细介绍其使用方法,包括实例配置、操作系统更换、快照与镜像使用、磁盘扩容...

    浙江中控 DCS ECS700 培训 资料

    【浙江中控DCS ECS700培训资料】是一份详尽的学习资源,专注于介绍浙江中控技术有限公司的分布式控制系统(DCS)——ECS700系统。这份资料涵盖了DCS ECS700的核心组成部分及其操作应用,旨在帮助用户理解和掌握该...

    《ECS运维指南 之 Linux系统诊断》

    ECS是当前阿里云的核心产品,又是很多云服务的基座产品,随着集团内部上云,越来越多的应用和服务构建在ECS之上,而针对使用ECS的阿里云用户提交的售后问题也是多而广,为了更好地服务用户,并使得越来越多的用户...

    自动化集装箱码头TOS-ECS接口研究_姜作飞1

    【自动化集装箱码头TOS-ECS接口研究】 自动化集装箱码头是现代港口的重要组成部分,其高效、安全的运营离不开码头操作系统(TOS)与设备控制系统(ECS)的紧密协作。TOS负责码头整体作业的逻辑控制,包括船舶计划、...

    Ansible-ECS-CommunityEdition.zip

    6. **动态库存**:Ansible的动态库存插件允许直接从阿里云API获取ECS实例信息,无需手动维护主机列表,大大提高了灵活性和准确性。 7. **安全性与合规性**:通过Ansible,用户可以定义并强制执行安全策略,例如限制...

    LED-ECS编辑控制系统6.1.3【安装版】官方

    总之,LED-ECS编辑控制系统6.1.3是一款全面且强大的LED显示屏管理软件,它不仅支持最新的6代控制卡,还向下兼容5代U盘控制卡,提供多样化的编辑工具和安全设置,满足不同用户的需求。通过安装"LED-ECS V6.1.3(SVN265...

    Apache ECS

    【Apache ECS】是一种Java库,全称为"Enterprise Component Services",它为Servlet环境提供了一种更高级别的输出处理机制。在传统的Servlet编程中,我们通常使用`out.println()`方法将内容写入到响应流中。然而,...

    unity_ECS学习

    Unity ECS(Entity Component System)是Unity引擎中的一种高性能、数据驱动的游戏开发框架,它用于构建大规模、复杂的实时应用。ECS代表实体(Entity)、组件(Component)和系统(System),这是一种设计模式,...

    浙大中控ECS-700功能块使用举例.pdf

    浙大中控ECS-700是浙大中控技术股份有限公司推出的一款集散控制系统(DCS),广泛应用于各种工业生产过程的自动控制。本文主要介绍ECS-700在不同控制方式下的功能块使用示例,包括单回路控制、串级控制、比例控制、分...

    云服务器ECS的概念.pptx

    掌握云服务其的特点,与传统服务器的区别,ECS的功能、组成、应用场景。掌握ECS的基本操作,了解阿里云的弹性计算。

    amazon-ecs.jar.zip

    亚马逊ECS(Amazon Elastic Container Service)是亚马逊AWS提供的一个完全托管的容器管理服务,它让开发者可以轻松地在云端运行和管理Docker容器。通过使用ECS,用户无需关心基础设施的配置,而是专注于应用程序的...

Global site tag (gtag.js) - Google Analytics