函数简写


// 立即执行函数
(function test(){})()

// () => ({})等同于() => { return {} }
const func = (num) => ({ age:num })

// 以下语法等价
data.map(item => item.x)
data.map((item) => { return item.x })

模块数据导出


// demo.js 同时导出对象和函数
export const demo = () => {
    return true
}
export default { demo }

// index.js 同时接收并使用对象和函数
import testdemo, { demo } from './demo.js';
console.log(testdemo.demo())
console.log(demo())
// --------------------------------------

// test.js导出一个对象
const getRandom = () => {}
export default { getRandom }

import test from './test.js';
console.log(test.getRandom())

import { getRandom } from './test.js';
console.log(getRandom())
// --------------------------------------

// test.js导出一个函数
const getRandom = () => {}
export default getRandom

import regx from './test.js';
console.log(regx())

exportexport default 区别


  • export default 向外暴露的成员,可以使用 任意变量 来接收(这里说的任意变量也可是解构对象)
  • 在一个模块中,export default 只允许向外暴露一次
  • 使用export向外暴露的成员,只能使用{}的形式来接收,且名称要和导出的一致
  • export导出的成员,可以使用as来起别名

exportsmodule.exports 区别


  • module.exportsexports 两者没有区别,是全等的

TIP

不恰当的使用方法:exports = xxx

exports 在默认情况下是指向 module.exports 对象的引用,如果为 exports 赋值了,那么也就是说 exports 不再指向 module.exports 所指的对象的地址,而我们向外共享成员的最终结果是 module.exports 所指的对象,如此便会导致错误

asyncawait


  • async 表示这是一个 async 函数, await 只能用在 async 函数里面, 不能单独使用
  • async 返回的是一个Promise对象, await 就是等待这个 Promise 的返回结果后, 再继续执行
  • await 等待的是一个Promise对象, 后面必须跟一个Promise对象, 但是不必写then(), 直接就可以得到返回值

const func = async () => { return 1 }
// 声明为异步函数,调用后会将return的结果包装成Promise返回
// 返回的结果: Promise {<fulfilled>: 1}
func()