ES6 新特性

1. 新特性

1.1 let 与 const

let 声明的变量只在 let 命令所在的代码块内有效。不能重复声明。不存在变量提升。

// 输出 0- 9:  for (let j = 0; j < 10; j++) { setTimeout(function(){ console.log(j); }) }

const 声明一个只读的常量,一旦声明,常量的值就不能改变。一但声明必须初始化,否则会报错。

const 更为详细的介绍

 

var 和 let :

 let 是块作用域,即其在整个大括号 {} 之内可见

在变量声明之前就访问变量的话,会直接提示 ReferenceError,而不像 var 那样使用默认值 undefined

 

const 和 let 

作用域是一致的,不同的是 const 变量一旦被赋值,就不能再改变了

但是这并不意味着使用 const 声明的变量本身不可变,只是说它不可被再次赋值了

 

什么时候用 var、let 或 const 呢?

大多数情况下都使用 const

如果变量的值的确需要改变,例如在 for 循环里面,那么就是用 let

(与时俱进,es6,就不要用 var 了吧。。)

 

1.2 解构赋值 

一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值

数组模型的解构 : 基本  可嵌套  可忽略  不完全解构  剩余运算符  字符串等  解构默认值

let [a, b, c] = [1, 2, 3];   // a = 1 // b = 2 // c = 3

对象模型的解构 :  基本  可嵌套可忽略  不完全解构  剩余运算符  解构默认值

let { foo, bar } = { foo: 'aaa', bar: 'bbb' };   // foo = 'aaa' // bar = 'bbb'

 

1.3 Symbol

ES6 数据类型除了 Number 、 String 、 Boolean 、 Objec t、 null 和 undefined ,还新增了 Symbol 。表示独一无二的值.

使用场景 :  作为属性名   定义常量

let sy = Symbol("KK");  console.log(sy);   // Symbol(KK)    typeof(sy);        // "symbol"

let yellow1 = Symbol.for("Yellow");   Symbol.keyFor(yellow1);    // "Yellow"

 

1.4 Map 与 Set

1.4.1 Map 对象

Maps 和 Objects 的区别
一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。
Map 中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。
Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。
Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。

var myMap = new Map(); var keyString = "a string"; myMap.set(keyString, "和键'a string'关联的值"); myMap.get(keyString); // "和键'a string'关联的值" myMap.get("a string"); // "和键'a string'关联的值"

Map 的迭代 : for...of     forEach()

Map 对象的操作: Map 与 Array的转换  Map 的克隆  Map 的合并  

 

1.4.2 Set 对象

存储任何类型的唯一值,无论是原始值或者是对象引用。

let mySet = new Set(); mySet.add(1); // Set(1) {1} mySet.add(5); // Set(2) {1, 5} mySet.add(5); // Set(2) {1, 5} 这里体现了值的唯一性

 

 类型转换   :  Array 转 Set    Set 转 Array   String 转 Set

Set 对象作用: 数组去重    并集    交集    差集

 

此处省略N个点,后续文章再细节描述

 

2. 参考链接

ES6 教程

ECMAScript 6 入门

javaScript、ES5和ES6的介绍和区别

ES6 基础

 

posted @ 2019-03-12 15:09  justSmile2  阅读(214)  评论(0编辑  收藏  举报