ECMAScript 6入门 互动版

简介
什么是ES6? 支持 环境支持
变量与字符串
let let应用 const声明常量 是否包含字符串三种新方法 repeat()原字符串重复 模板字符串 标签模板 String.raw()
数值
值是否无穷,NaN 值是否整数 Math对象 Math 对数方法
数组
Array.from() Array.of() 数组实例的find()和findIndex() 数组实例的fill() 数组实例的entries(),keys()和values()
对象
属性的简洁表示法 属性名表达式 比较两个值是否严格相等 Object.assign() proto属性 Symbol类型 Proxy内置代理
函数
默认参数 rest参数 扩展运算符 箭头函数 函数绑定 尾调用优化
Set
基本用法 Set实例的属性 Set实例的方法 遍历操作 WeakSet
Map
Map结构的目的和基本用法 实例的属性和操作方法 遍历方法 WeakMap
Iterator(遍历器)和for..of
Iterator(遍历器)的概念 数据结构的默认Iterator接口 调用默认Iterator接口的场合 原生具备Iterator接口的数据结构 Iterator接口与Generator函数 遍历器的return(),throw() for...of循环
Generator
简介 next方法的参数 for...of循环 throw方法 yield*语句 作为对象属性的Generator函数
Promise
Promise的含义 基本用法 Promise实例添加状态改变时的回调函数 指定发生错误时的回调函数 Promise.all()方法 Promise.race()方法 Promise.resolve()方法 Promise.reject()方法 Generator函数与Promise的结合 async函数
Class
Class基本语法 Class的继承 class的取值函数(getter)和存值函数(setter) Class的Generator方法 Class的静态方法 new.target属性 修饰器-类的修饰1 修饰器-类的修饰2
Module
export命令 import命令 模块的整体输入 module命令 export default命令 模块的继承
在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

const命令

const 声明的是常量,一旦声明,值将是不可变的。

const PI = 3.1415;
PI // 3.1415

PI = 3;
PI // 3.1415

const PI = 3.1;
PI // 3.1415

const 也具有块级作用域

if (true) {
  const max = 5;
}
document.write(max);  // ReferenceError 常量MAX在此处不可得

const 不能变量提升(必须先声明后使用)

if (true) {
  document.write(MAX); // ReferenceError
  const MAX = 5;
}

const 不可重复声明

var message = "Hello!";
let age = 25;

// 以下两行都会报错
const message = "Goodbye!";
const age = 30;

const 指令指向变量所在的地址,所以对该变量进行属性设置是可行的(未改变变量地址),如果想完全不可变化(包括属性),那么可以使用冻结。

const C1 = {};
C1.a = 1;
document.write(C1.a); // 1 
C1 = {};  // 报错  重新赋值,地址改变

//冻结对象,此时前面用不用const都是一个效果
const C2 = Object.freeze({}); 
C2.a = 1; //Error,对象不可扩展
document.write(C2.a);
请在右侧的环境中,在if (true) { 声明一个const变量a,并为赋值为5, }在块级作用域中和外面,分别打印变量a看结果。