ES6 的笔记。
ECMAScript。
1 | ES6(ECMA 2015) |
关于变量
var:
- 可以重复声明
- 没有块级作用域
- 不能限制
let: 用来声明变量。
const: 声明常量。
- 进制重复声明
- 控制修改
- 支持块级作用域
解构赋值
- 左右两边对应
- 右边得是个东西(JSON)
1 | let {a,b,c}={a: 12, b: 55, c: 99}; |
函数
箭头函数
格式
- 函数只有一个参数的时候,可以省略参数的括号
- 函数体内只有一个 return 语句的时候,可以省略大括号
正常的函数:
1 | let f = function (x) { |
箭头函数:
1 | let f = x => x * x |
几个 🌰:
1 | window.onload=function (){ |
作用
箭头函数完全修复了this
的指向,this
总是指向词法作用域,也就是外层调用者obj
。
参数展开
剩余参数必须是最后一个。
1 | function show(a, b, ...arr){ |
展开数组,就跟把数组的东西写在那一样。
1 | let arr=[12,5,8,99,27]; |
系统对象
Array
map
映射,1 对 1。
1 | let arr=[100, 98, 37, 28, 19, 96, 56, 67]; |
forEach
遍历,循环一遍。
1 | let arr=[12, 5, 8, 99]; |
filter
过滤。
1 | let arr=[12, 88, 19, 27, 82, 81, 100, 107]; |
reduce
减少,多对 1。
1 | // 求和 |
1 | // 求平均数 |
String
字符串模板。
1 | let name = 'xixi'; |
要了解的两个函数。
1 | let url='http://www.bing.com/a'; |
JSON
标准写法
1 | {"key": "aaa", "key2": 12} |
JSON对象
1 | // stringify 将一个json对象转为字符串(序列化) |
异步处理
异步,多个操作可以一起进行,互不干扰。
同步,操作一个个进行。
ajax 异步处理方式
1 | $.ajax({ |
promise
1 | let p=new Promise(function (resolve, reject){ |
async / await
看起来是同步的方式,这是语法糖提供的方便,编译渲染后还是异步的方式。
1 | async function show(){ |
1 | <script src="jquery.min.js" charset="utf-8"></script> |
##兼容 IE
使用 babel。
在线编译
给浏览器的执行造成负担。
使用: 在 https://babeljs.io/ 下载 browser.min.js 文件,引入。
1 | 注意: type="text/babel" |
编译出来
先安装 node.js。
安装 babel 包。
1 | npm i @babel/core @babel/cli @babel/preset-env |
首先在用之前,用一条命令来生成一个 node.js 的工程文件:
1 | // 在工程文件下 |
然后会在本目录下生成一个 package.json 文件:
1 | { |
然后在此目录下新建一个.babelrc
文件,里面有:
1 | { |
在 html 代码中引入 src/1.js 文件,然后使用npm run build
,就可以生成一个 dest 目录,里面就有兼容 IE 的 ES6代码。