1.常量
| 12
 3
 
 | const PI = "3.1415926";
 PI = 3;
 
 | 
2.作用域
| 12
 3
 4
 5
 6
 7
 8
 
 | const callbacks = [];
 for (var i = 0; i < 2; i++) {
 callbacks[i] = function () {
 return i * 2;
 };
 }
 console.table([callbacks[0](), callbacks[1]()]);
 
 | 
这里的 for 循环中的 i 会被提前至外部,i 变量为全局变量
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | const callback = [];
 for (let j = 0; j < 2; j++) {
 callback[j] = function () {
 return j * 2;
 };
 }
 
 console.table([callback[0](), callback[1]()]);
 
 | 
3.箭头函数
值得注意的是,es6 中的箭头函数本没有自己的 this,他的 this 是继承而来,默认指向定义他所处的对象,此处指向的就是 factory 实例
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 | {function factory() {
 this.a = "a";
 this.b = "b";
 this.c = {
 a: "a+",
 b: () => {
 return this.a;
 },
 };
 }
 
 console.log(new factory().c.b());
 }
 
 | 
4.proxy 代理器
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 
 | var proxy = new Proxy(target, handler); eg: var ceshi = {
 get: function (target, key) {
 test(key, "get");
 return target[key];
 },
 set: function (target, key, value) {
 test(key, "set");
 if (key === "age") {
 if (0 < value < 100) {
 console.log(`年龄是${value}`);
 }
 if (value > 100) {
 console.log("输入的年龄无效!!!");
 }
 if (value < 0) {
 console.log("年龄不能为负数");
 }
 } else {
 console.log("你传入的参数不对");
 }
 return true;
 },
 };
 function test(key, action) {
 if (key[0] === "_") {
 return console.log("你传入的参数不对,请重新传入参数");
 }
 }
 var target = {};
 var proxy = new Proxy(target, ceshi);
 
 console.log(proxy.age);
 console.log((proxy.age = 20));
 console.log((proxy.age = 120));
 console.log(proxy._age);
 
 | 
5.变量的结构赋值
| 1
 | let { a, b, c } = { a: 1, b: 2, c: 3 };
 | 
6.字符串拓展
| 12
 3
 4
 
 | {var name='张三',age=20';
 console.log(`Hello ${name}, age is ${age}`)
 }
 
 | 
7.Promise
1)创建一个 Promise 实例
| 12
 3
 4
 5
 6
 7
 8
 
 | const bing = new Promise((resolve, reject) => {
 if ("画饼成功") {
 resolve("happy together");
 } else {
 reject("有难同当");
 }
 });
 
 | 
Promise 的三个状态
- pending: 执行中 
- fulfilled: 完成状态 
- rejected: 失败状态 
2)订阅方式,通过 then,catch
| 12
 3
 4
 5
 6
 7
 8
 
 | bing.then((success) => {
 console.log("success");
 },
 (fail) => {
 console.log("fail");
 }
 );
 
 | 
8.数组
语法:var filteredArray = array.filter(callback[,thisObject])
参数说明:callback:要对每个数组元素执行的回调函数
                    thisObject:在执行回调函数时定义的 this 对象
| 12
 3
 4
 5
 
 | function isBigEnough(ele, index, array) {
 return ele >= 10;
 }
 var filtered = [12, 5, 8, 100].filter(isBigEnough);
 
 | 
| 12
 3
 4
 5
 6
 
 | var strings = ["hello", "Array", "WORLD"];
 function makeUpperCase(v) {
 return v.toUpperCase();
 }
 var uppers = strings.map(makeUpperCase);
 
 | 
语法:对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 true,如果发现这个元素,some 返回 true,如果回调函数对每个元素执行后都返回 false,some 将返回 false。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略。
| 12
 3
 4
 5
 
 | function isBigEnough(ele, index, array) {return ele >= 10;
 }
 var passed = [2, 5, 8, 1, 4].some(isBigEnough);
 var passed1 = [12, 5, 1, 4].some(isBigEnough);
 
 | 
| 12
 3
 4
 5
 
 | function isBigEnough(ele, index, array) {return ele >= 10;
 }
 var passed = [2, 5, 8, 1, 4].every(isBigEnough);
 var passed1 = [12, 15, 11, 14].every(isBigEnough);
 
 |