1.常量
1 2 3
| const PI = "3.1415926";
PI = 3;
|
2.作用域
1 2 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 变量为全局变量
1 2 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 实例
1 2 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 代理器
1 2 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.字符串拓展
1 2 3 4
| { var name='张三',age=20'; console.log(`Hello ${name}, age is ${age}`) }
|
7.Promise
1)创建一个 Promise 实例
1 2 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
1 2 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 对象
1 2 3 4 5
| function isBigEnough(ele, index, array) { return ele >= 10; } var filtered = [12, 5, 8, 100].filter(isBigEnough);
|
1 2 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。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略。
1 2 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);
|
1 2 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);
|